# Kodering Onderhoud Universiteit
> Ek het oorspronklik dié as 'n kort om-te-doen lys van studie onderwerpe om 'n sagteware ingenieur te word gemaak,
> maar did het gegroei tot die groot lys wat jy vandag sien. Nadat ek dié studieplan gevolg het, [het Amazon my
> aangestel](https://startupnextdoor.com/ive-been-acquired-by-amazon/?src=ciu)!
> Jy hoef heel waarskynlik nie soveel soos ek te studeer nie. Maar alles wat jy nodig het is hier.
>
> Ek het ongeveer 8-12 gestudeer elke dag, vir maande. Hier is my storie: [Hoekom ek vol-tyd gestudeer het, vir 8 maande, vir 'n Google onderhoud](https://medium.freecodecamp.org/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13)
>
> **Let asseblief op: ** Jy sal nie soveel soos ek hoef te studeer nie. Ek het baie tyd gemors op goed wat ek nie benodig het nie. Meer inligting daaroor onder. Ek sal jou help leer sonder om jou kosbare tyd te mors.
>
> Die items wat hier gelys is sal jou goed voorberei vir tegniese onderhoude by omtrent enige sagteware maatskappy,
> insluitend die reuse: Amazon, Facebook, Google, en Microsoft.
>
> *Sterkte!*
Vertalings:
- [中文版本](translations/README-cn.md)
- [Tiếng Việt - Vietnamese](translations/README-vi.md)
- [Español](translations/README-es.md)
- [Português Brasileiro](translations/README-ptbr.md)
- [Polish](translations/README-pl.md)
- [繁體中文](translations/README-tw.md)
- [Japanese (日本語)](translations/README-ja.md)
- [Russian](translations/README-ru.md)
- [German](translations/README-de.md)
- [Bahasa Indonesia](translations/README-id.md)
- [ខ្មែរ - Khmer](translations/README-kh.md)
- [Uzbek](translations/README-uz.md)
- [Bulgarian](translations/README-bg.md)
- [বাংলা - Bangla](translations/README-bn.md)
Vertalings aan die gang:
- [हिन्दी](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)
## Wat is dit?

Dié is my multi-maand studie plan om 'n sagteware ingeneur te word vir 'n groot maatskappy.
**Benodighede:**
* 'n Bietjie ondervinding met kodrering (veranderlikes, lusse, metodes/funksies, ens)
* Geduld
* Tyd
Let wel dat die 'n studieplan vir 'n **sagteware ingeneur** pos is, nie 'n webontwikkeling pos nie. Groot maatskappeie soos Google, Amazon,
Facebook en Microsoft sien sagteware ingeneurs as verskilled van webontwikkeling ingeneurs. Byvoorbeeld, Amazon het
Frontend Ingeneurs (FEE) en Sagteware Ontwikkeling Ingeneurs (SDE). Die is 2 verskeie rolle en die onderhoude verskil,
omdat elkeen sy eie bevoegdhede het. Dié maatskappeie benodig rekenaar wetenskap kennis vir
sagteware ontwikkeling/ingeneur rolle.
---
## Inhoudsopgawe
### Die Studie Plan
- [Wat is dit?]()
- [Hoekom gebruik dit?](#hoekom-gebruik-dit)
- [Hoe om dit te gebruik](#hoe-om-dit-te-gebruik)
- [Moenie voel asof jy nie slim genoeg is nie](#moenie-voel-asof-jy-nie-slim-genoeg-is-nie)
- ['n Nota Oor Video Hulpbronne](#n-nota-oor-video-hulpbronne)
- [Kies 'n Programmeeringstaal](#kies-n-programmeeringstaal)
- [Boeke vir Datastrukture en Algoritmes](#boeke-vir-datastrukture-en-algoritmes)
- [Onderhoud Voorbereïngsboeke](#onderhoud-voorbereiding)
- [Moenie My Foute Maak Nie](#moenie-my-foute-maak-nie)
- [Wat Jy Nie Sal Sien Gedek Word Nie](#wat-jy-nie-sal-sien-gedek-word-nie)
- [Die Daaglikse Plan](#die-daaglikse-plan)
- [Kodering Vrae Beoefening](#kodering-vrae-beoefening)
- [Kodering Probleme](#kodering-probleme)
## Onderwerpe om te Studeer
- [Kodering Onderhoud Universiteit]()
- [Wat is dit?](#wat-is-dit)
- [Inhoudsopgawe](#inhoudsopgawe)
- [Die Studie Plan](#die-studie-plan)
- [Onderwerpe om te Studeer](#onderwerpe-om-te-studeer)
- [Kry die Werk](#kry-die-werk)
- [Opsionele Ekstra Onderwerpe & Hulpbronne](#opsionele-ekstra-onderwerpe--hulpbronne)
- [Hoekom gebruik dit?](#hoekom-gebruik-dit)
- [Hoe om dit te gebruik?](#hoe-om-dit-te-gebruik)
- [As jy nie git wil gebruik nie](#as-jy-nie-git-wil-gebruik-nie)
- [As jy gemaklik met git is](#as-jy-gemaklik-met-git-is)
- [Moenie voel asof jy nie slim genoeg is nie](#moenie-voel-asof-jy-nie-slim-genoeg-is-nie)
- ['n Nota Oor Video Hulpbronne](#n-nota-oor-video-hulpbronne)
- [Kies 'n Programmeeringstaal](#kies-n-programmeeringstaal)
- [Vir die Studie Plan](#vir-die-studie-plan)
- [Vir jou Kodering Onderhoud](#vir-jou-kodering-onderhoud)
- [Boeke vir Datastrukture en Algoritmes](#boeke-vir-datastrukture-en-algoritmes)
- [C](#c)
- [Python](#python)
- [Java](#java)
- [C++](#c-1)
- [Onderhoud Voorbereïngsboeke](#onderhoud-voorbereiding)
- [As jy tonne ekstra tyd het](#as-jy-tonne-ekstra-tyd-het)
- [Moenie My Foute Maak Nie](#moenie-my-foute-maak-nie)
- [1. Jy Sal Nie Alles Onthou Nie](#1-jy-sal-nie-alles-onthou-nie)
- [2. Gebruik flitskaarte](#2-gebruik-flitskaarte)
- [3. Doen Kodering Onderhoud Vrae Terwyl Jy Leer](#3-doen-kodering-onderhoud-vrae-terwyl-jy-leer)
- [4. Fokus](#4-fokus)
- [Wat Jy Nie Sal Sien Gedek Word Nie](#wat-jy-nie-sal-sien-gedek-word-nie)
- [Die Daaglikse Plan](#die-daaglikse-plan)
- [Kodering Vrae Beoefening](#kodering-vrae-beoefening)
- [Kodering Probleme](#kodering-probleme)
- [Begin Solank](#begin-solank)
- [Algoritmiese Kompleksiteit / Big-O / Asimptotiese analise](#algorithmic-complexity--big-o--asymptotic-analysis)
- [Datastrukture](#datastrukture)
- [Meer Kennis](#meer-kennis)
- [Bome](#bome)
- [Sorteer](#sorteer)
- [Grafieke](#grafieke)
- [Nog Meer Kennis](#nog-meer-kennis)
- [Finale Resensie](#finale-resensie)
- [Werk Jou CV By](#werk-jou-cv-by)
- [Kry 'n Werk](#kry-n-werk)
- [Onderhoudproses & Algemene Voorbereiding](#onderhoudproses--algemene-voorbereiding)
- [Dink aan vir wanneer die onderhoud kom](#dink-aan-vir-wanneer-die-onderhoud-kom)
- [Hê vrae vir die onderhoudvoerder](#he-vrae-vir-die-onderhoudvoerder)
- [Sodra Jy Die Werk Het](#sodra-jy-die-werk-het)
- [Bykomende Boeke](#bykomende-boeke)
- [Stelsel Onderwerp, Skaalbaarheid, Data Hantering](#stelsel-onderwerp-skaalbaarheid-data-hantering)
- [Bykomende Leer](#bykomende-leer)
- [Bykomende Detail op Sommige Vakke](#bykomende-detail-op-sommige-vakke)
- [Video Reeks](#video-reeks)
- [Rekenaar Wetenshap Kursusse](#rekenaar-wetenshap-kursusse)
- [Algoritmes implementering](#algoritmes-implementering)
- [Papiere](#papiere)
- [LISENSIE](#lisensie)
### Kry die Werk
- [Werk Jou CV By]()
- [Kry 'n Werk](#kry-n-werk)
- [Onderhoudproses & Algemene Voorbereiding](#onderhoudproses--algemene-voorbereiding)
- [Dink aan vir wanneer die onderhoud kom](#dink-aan-vir-wanneer-die-onderhoud-kom)
- [Hê vrae vir die onderhoudvoerder](#he-vrae-vir-die-onderhoudvoerder)
- [Sodra Jy Die Werk Het](#sodra-jy-die-werk-het)
**---------------- Alles hieronder is opsioneel ----------------**
### Opsionele Ekstra Onderwerpe & Hulpbronne
- [Kodering Onderhoud Universiteit]()
- [Wat is dit?](#wat-is-dit)
- [Inhoudsopgawe](#inhoudsopgawe)
- [Die Studie Plan](#die-studie-plan)
- [Onderwerpe om te Studeer](#onderwerpe-om-te-studeer)
- [Kry die Werk](#kry-die-werk)
- [Opsionele Ekstra Onderwerpe & Hulpbronne](#opsionele-ekstra-onderwerpe--hulpbronne)
- [Hoekom gebruik dit?](#hoekom-gebruik-dit)
- [Hoe om dit te gebruik?](#hoe-om-dit-te-gebruik)
- [As jy nie git wil gebruik nie](#as-jy-nie-git-wil-gebruik-nie)
- [As jy gemaklik met git is](#as-jy-gemaklik-met-git-is)
- [Moenie voel asof jy nie slim genoeg is nie](#moenie-voel-asof-jy-nie-slim-genoeg-is-nie)
- ['n Nota Oor Video Hulpbronne](#n-nota-oor-video-hulpbronne)
- [Kies 'n Programmeeringstaal](#kies-n-programmeeringstaal)
- [Vir die Studie Plan](#vir-die-studie-plan)
- [Vir jou Kodering Onderhoud](#vir-jou-kodering-onderhoud)
- [Boeke vir Datastrukture en Algoritmes](#boeke-vir-datastrukture-en-algoritmes)
- [C](#c)
- [Python](#python)
- [Java](#java)
- [C++](#c-1)
- [Onderhoud Voorbereïngsboeke](#onderhoud-voorbereiding)
- [As jy tonne ekstra tyd het](#as-jy-tonne-ekstra-tyd-het)
- [Moenie My Foute Maak Nie](#moenie-my-foute-maak-nie)
- [1. Jy Sal Nie Alles Onthou Nie](#1-jy-sal-nie-alles-onthou-nie)
- [2. Gebruik flitskaarte](#2-gebruik-flitskaarte)
- [3. Doen Kodering Onderhoud Vrae Terwyl Jy Leer](#3-doen-kodering-onderhoud-vrae-terwyl-jy-leer)
- [4. Fokus](#4-fokus)
- [Wat Jy Nie Sal Sien Gedek Word Nie](#wat-jy-nie-sal-sien-gedek-word-nie)
- [Die Daaglikse Plan](#die-daaglikse-plan)
- [Kodering Vrae Beoefening](#kodering-vrae-beoefening)
- [Kodering Probleme](#kodering-probleme)
- [Begin Solank](#begin-solank)
- [Algoritmiese Kompleksiteit / Big-O / Asimptotiese analise](#algorithmic-complexity--big-o--asymptotic-analysis)
- [Datastrukture](#datastrukture)
- [Meer Kennis](#meer-kennis)
- [Bome](#bome)
- [Sorteer](#sorteer)
- [Grafieke](#grafieke)
- [Nog Meer Kennis](#nog-meer-kennis)
- [Finale Resensie](#finale-resensie)
- [Werk Jou CV By](#werk-jou-cv-by)
- [Kry 'n Werk](#kry-n-werk)
- [Onderhoudproses & Algemene Voorbereiding](#onderhoudproses--algemene-voorbereiding)
- [Dink aan vir wanneer die onderhoud kom](#dink-aan-vir-wanneer-die-onderhoud-kom)
- [Hê vrae vir die onderhoudvoerder](#he-vrae-vir-die-onderhoudvoerder)
- [Sodra Jy Die Werk Het](#sodra-jy-die-werk-het)
- [Bykomende Boeke](#bykomende-boeke)
- [Stelsel Onderwerp, Skaalbaarheid, Data Hantering](#stelsel-onderwerp-skaalbaarheid-data-hantering)
- [Bykomende Leer](#bykomende-leer)
- [Bykomende Detail op Sommige Vakke](#bykomende-detail-op-sommige-vakke)
- [Video Reeks](#video-reeks)
- [Rekenaar Wetenshap Kursusse](#rekenaar-wetenshap-kursusse)
- [Algoritmes implementering](#algoritmes-implementering)
- [Papiere](#papiere)
- [LISENSIE](#lisensie)
---
## Hoekom gebruik dit?
As jy wil werk as 'n sagteware ingeneur vir 'n groot maatskappy, hierdie is die goed wat jy moet ken.
As jy uitgemis het op 'n rekenaar wetenskap graad, soos ek het, sal hierdie jou laat opvang en vier jaar van jou lewe spaar.
Toe ek hierdie projek begin het, kon ek nie verskil tussen 'n stapel en 'n hoop nie, het niks van Big-O geweet nie, of enige iets van bome nie, of hoe om
'n grafiek te dwars nie. As ek 'n sorteer algoritme moes kode, kan ek jou verseker dit was verskriklik.
Elke datastruktuur wat ek ooit moes gebruik was ingebou in die taal, end ek het nie geweet hoe hulle werk
onder die kap nie. Ek het nooit nodig gehaad of geheue te bestuur nie, tensy 'n proses vir my 'n "te min
beskikbare geheue" fout gegee het, en dan moes ek 'n ander oplossing kry. Ek het 'n paar multidimensionele skikkings
in my lewe gebruik en duisende assosiatiewe skikkings, maar ek hoef nooit 'n datastruktuur van nuut af gebou het nie.
Dis 'n lang plan. Dit gaan maande vat. As jy klaar gemaklik met baie van dié is gaan dit jou baie minder tyd vat.
## Hoe om dit te gebruik?
Alles hieronder is 'n uitlyn, en jy moet elke item aan pak in orde van bo tot onder.
Ek gebruik Github se spisiale markdown flavor, insluitend taaklyste om vordering te volg.
- [More about GitHub-flavored markdown](https://guides.github.com/features/mastering-markdown/#GitHub-flavored-markdown)
### As jy nie git wil gebruik nie
Op dié blad, kliek die Code knop naby die bookant, dan kliek "Download ZIP". Unzip die lêer en jy kan werk met die teks lêers.
As jy in 'n kode redakteur is wat markdown verstaan, sal jy sien alles is mooi geformateer.

### As jy gemaklik met git is
Skep 'n nuwe tak sodat jy items soos dié kan merk, sit net 'n x in die hakies: [x]
Virk 'n tak en vold die bevele hieronder
Virk die Github repo https://github.com/jwasham/coding-interview-university deur om die Fork knop to druk.
Kloon na jou plaaslike repo:
git clone git@github.com:/coding-interview-university.git
git checkout -b progress
git remote add jwasham https://github.com/jwasham/coding-interview-university
git fetch --all
Merk al die bokse met X nadat jy jou veranderinge voltooi het:
git add .
git commit -m "Marked x"
git rebase jwasham/main
git push --set-upstream origin progress
git push --force
## Moenie voel asof jy nie slim genoeg is nie
- Suksesvolle sagteware ingeneurs is slim, maar baie het onsekerhede dat hulle nie slim genoeg is nie.
- [Die mite van die Geniale Programeerder](https://www.youtube.com/watch?v=0SARbwvhupQ)
- [Dit is Gevaarlik om Alleen te Gaan: Struikel teen die Onsigbare Monsters in Tegnologie](https://www.youtube.com/watch?v=1i8ylq4j_EY)
## 'n Nota Oor Video Hulpbronne
Sekere videos is net beskikbaar as jy skryf vir 'n kurses in 'n Coursera of EdX klas. Dié is genoem MOOCs.
Soms is die klasse nie in sessie nie end jy sal moet wag vir 'n paar maande, so jy het nie toegang nie.
Dit sal wonderlik wees om die aanlyn klasse te vervang met gratis en altyd-beskikbare openbare bronne,
soos YouTube videos (verkieslik universiteitslesings), sodat julle daarvanaf enige tyd kan leer,
nie net wanneer 'n spesifieke aanlyn kursus in sessie is nie.
## Kies 'n Programmeeringstaal
Jy sal 'n programmeringstaal moet kies vir die kodering onderhoude wat jy gaan doen,
maar jy sal dan ook 'n taal moet kies waarmee jy rekenaar wetenskap konsepte kan leer.
Verkieslik is die taal dieselfde, sodat jy net vaardigheid in een hoef te bou.
### Vir die Studie Plan
Toe ek die studie plan gedoen het, het ek 2 tale gebruik vir meeste van dit: C en Python
* C: Baie lae vlak. Laat jou toe om met pointers en geheue allocation/deallocation te werk, sodat jy die datastrukture en
algoritmes voel in jou bene. In hoër vlak tale soos Python en Java word die weggesteek van jou af. In daaglikse werk is dit wonderlik,
maar wanneer jy leer hoe die lae-vlak datastrukture gebou is, voel dit lekker om naby die metaal te wees.
- C is orals. Jy sal voorbeelde in boeke, lesings, vidoes, en *oral* sien wanner jy studeer.
- [The C Programming Language, Vol 2](https://www.amazon.com/Programming-Language-Brian-W-Kernighan/dp/0131103628)
- Dié is 'n kort boek, maar dit sal jou 'n goeie vat gee oor die C taal en as jy dit 'n bikie oefen sal jy vinnig
vaardigheid bou. Deur om C te verstaan help dit jou om te verstaan hoe programme en geheue werk.
- Jy hoef nie super diep in die boek te gaan nie (of eens dit klaar te maak nie). Gaan net tot die punt waar jy C gemaklik kan lees en skryf.
- [Antwoorde vir vrae in die boek](https://github.com/lekkas/c-algorithms)
* Python: Modern en baie duur, ek het dit geleer want dis super nuttig en laat my toe om minder kode te skruf in 'n onderhoud.
Die is my voorkeur. Doen jy wat vir jou pas, natuurlik.
Jy mag dit dalk nie nodig kry nie, maar hier is 'n paar webwerwe om jou nuwe taal te leer:
- [Exercism](https://exercism.org/tracks)
- [Codewars](http://www.codewars.com)
- [Codility](https://codility.com/programmers/)
- [HackerEarth](https://www.hackerearth.com/)
- [Sphere Online Judge (spoj)](http://www.spoj.com/)
- [Codechef](https://www.codechef.com/)
- [Codeforces](https://codeforces.com/)
### Vir jou Kodering Onderhoud
Jy kan 'n taal gebruik waarmee jy gemaklik in is om die kodeering deel van die onderhoud te doen, maar vir groot maatskappye is die goeie besluite:
- C++
- Java
- Python
Jy kan ook dié gebruik, maar lees eers rond. Daar is baie caveats:
- JavaScript
- Ruby
Hier is 'n artikel wat ek geskryf het oor hoe om 'n taal te kies vir die onderhoud:
[Pick One Language for the Coding Interview](https://startupnextdoor.com/important-pick-one-language-for-the-coding-interview/).
Hierdie is die oorspronklike artikel wat my pos op basseer was: [Choosing a Programming Language for Interviews](https://web.archive.org/web/20210516054124/http://blog.codingforinterviews.com/best-programming-language-jobs/)
Jy moet baie gemaklik in die taal wees en kundig.