README_DUTCH.md 131 KB

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! 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

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

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)

Onderwerpen van studie

De baan krijgen

---------------- Alles onder dit punt is optioneel ----------------

Optionele extra onderwerpen en bronnen


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.

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

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

  2. Kloon naar uw lokale repo:

    git clone git@github.com:<your_github_username>/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
    
  3. 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

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

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:

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:

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, 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).

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 (of websites met codeerproblemen, hieronder vermeld)
  2. Stel 2 of 3 vragen over gekoppelde lijsten.
  3. Ga verder met het volgende leeronderwerp.
  4. Ga later terug en doe nog eens 2 of 3 problemen met gekoppelde lijsten.
  5. 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:

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.

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

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

Het oefenen van codeervragen gaat niet over het onthouden van antwoorden op programmeerproblemen.

Codeerproblemen

Vergeet uw belangrijkste coderingsinterviewboeken niet hier.

Problemen oplossen:

Video's met sollicitatievragen over coderen:

Uitdagingssites:

  • LeetCode
    • 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
  • TopCoder
  • Geeks voor Geeks
  • InterviewBit
  • Project Euler
  • AlgoExpert
    • 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

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:
    • [ ] 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:
    • C-code (video) - niet de hele video, alleen delen over Node struct en geheugentoewijzing
    • Gelinkte lijst versus arrays:
    • Waarom je gelinkte lijsten (video) moet vermijden
    • 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.
    • 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
  • Stapel

    • Stacks (video)
    • Wordt niet geïmplementeerd. Implementeren met array is triviaal
  • Rij

    • Wachtrij (video)
    • Circulaire buffer/FIFO
    • 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

Meer kennis

Bomen

Sorteren

Als samenvatting is hier een visuele weergave van 15 sorteeralgoritmen. Als u meer details over dit onderwerp nodig hebt, raadpleegt u het gedeelte "Sorteren" in Aanvullende details over 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.

Nog meer kennis

Backtracking-blauwdruk: Java Python


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.

Werk je CV bij

Vind een baan

Interviewproces en algemene sollicitatievoorbereiding

Mock-interviews:

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:

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
    • Een oudje maar een goodie
  • De Linux-opdrachtregel: een complete introductie
    • Een moderne optie
  • TCP/IP Illustrated Series
  • Head First Design Patterns
    • Een zachte introductie tot ontwerppatronen
  • Ontwerppatronen: elementen van herbruikbare objectgeoriënteerde software
    • AKA het boek "Bende van vier", of GOF
    • Het canonieke ontwerppatronenboek
  • Handleiding voor algoritmeontwerp (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:
    • Errata
  • Write Great Code: Volume 1: Understanding the Machine

    • 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, 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

    • 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

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

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.

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?

Videoserie

Leun achterover en geniet.

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/)

Cursussen informatica

Implementatie van algoritmen

Papieren

LICENTIE

CC-BY-SA-4.0