From 9f133d324f13ebec81635e61ff9b22397084f6cb Mon Sep 17 00:00:00 2001 From: name Date: Tue, 6 Sep 2022 22:31:13 -0700 Subject: [PATCH 1/3] 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) + +
+ +
+
+

+ Become a sponsor and support Coding Interview University! +

+

+ Special thanks to: +

+

+ +

+ Gitpod +
+
+

+ 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. +
+
+

+
+
+ +## 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 fe99254e2031d4257f35927c12f3c2bdf288c6a7 Mon Sep 17 00:00:00 2001 From: name Date: Fri, 30 Sep 2022 16:17:45 -0700 Subject: [PATCH 2/3] 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) + +
+ +
+
+

+ Become a sponsor and support Coding Interview University! +

+

+ Special thanks to: +

+

+ +

+ Gitpod +
+
+

+ 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. +
+
+

+
+
+ +## Бұл не? + +![Тақтадағы кодтау - 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 1c6b6d9eda56b45d192091119ae3491e10410395 Mon Sep 17 00:00:00 2001 From: name Date: Tue, 18 Oct 2022 09:04:11 -0700 Subject: [PATCH 3/3] 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