# Hvernig á að nota leifturspjöld til að ná árangri í forritunarviðtölum

Að undirbúa sig fyrir tæknileg viðtöl hjá stærstu tæknifyrirtækjunum (oft kölluð FAANG eða MAANG) getur virst yfirþyrmandi. Með hundruð gagnagrinda, reiknirita og kerfishönnunarhugtaka til að leggja á minnið er ekki alltaf nóg að leysa bara LeetCode vandamál.

Margir farsælir hugbúnaðarverkfræðingar nota **leifturspjöld með dreifðri upprifjun** sem leynivopn til að muna flókin tæknileg hugtök. Hér er hvernig þú getur notað Flashcards World til að undirbúa þig fyrir næsta forritunarviðtal.

## 1. Að leggja á minnið tíma- og plássflækjustig (Big O Notation)

Í forritunarviðtali þarftu ekki bara að leysa vandamálið; þú þarft að þekkja skilvirkni lausnarinnar þinnar. Ef spyrillinn spyr: „Getum við gert þetta betur en O(N^2)?“, þarftu samstundis að vita tímaflækjustig annarra gagnagrinda.

**Hvernig á að búa til leifturspjöldin:**
*   **Framhlið:** Hver er meðal- og versta fall tímaflækjustig fyrir leit í Hash Map?
*   **Bakhlið:** Meðaltal: O(1). Versta fall: O(N) (ef það eru margir hash árekstrar).
*   **Framhlið:** Hvert er tímaflækjustig þess að raða fylki með Merge Sort?
*   **Bakhlið:** O(N log N) fyrir bæði meðal- og versta fall. Plássflækjustig er O(N).

Búðu til sérstakan stokk fyrir „Big O flækjustig“ og farðu yfir hann daglega.

## 2. Að þekkja reikniritsmynstur (Algorithm Patterns)

Í stað þess að reyna að leggja á minnið nákvæmar kóðalausnir fyrir 500 mismunandi vandamál, notaðu leifturspjöld til að leggja **mynstur** á minnið. Um leið og þú þekkir mynstrið geturðu skrifað kóðann.

**Hvernig á að búa til leifturspjöldin:**
*   **Framhlið:** Mynsturskveikja: „Finndu stystu leiðina í óvigtuðu neti (graph).“
*   **Bakhlið:** Breiddarleit (Breadth-First Search - BFS) með því að nota biðröð (Queue).
*   **Framhlið:** Mynsturskveikja: „Finndu allar samsetningar eða umraðanir í fylki.“
*   **Bakhlið:** Bakk (Backtracking) / Dýptarleit (Depth-First Search - DFS) með því að nota endurkvæmni (recursion).
*   **Framhlið:** Mynsturskveikja: „Finndu stærstu undirfylkissummu af fastri stærð K.“
*   **Bakhlið:** Rennigluggaaðferðin (Sliding Window technique).

## 3. Orðaforði í kerfishönnun og málamiðlanir (Trade-offs)

Kerfishönnunarviðtöl krefjast þess að þú vegir og metir mismunandi arkitektúrmálamiðlanir. Leifturspjöld eru fullkomin til að leggja á minnið kosti og galla mismunandi tækni.

**Hvernig á að búa til leifturspjöldin:**
*   **Framhlið:** SQL vs. NoSQL: Hvenær ættirðu að velja NoSQL?
*   **Bakhlið:** 1. Þegar gögn eru óstrúktúruð eða skemalaus. 2. Þegar þú þarft hraða lárétta skölun (sharding). 3. Fyrir hraða frumgerðasmíði (prototyping).
*   **Framhlið:** Hver er munurinn á Long Polling, WebSockets og Server-Sent Events (SSE)?
*   **Bakhlið:** (Listaðu upp skilgreiningarnar og sérstök notkunartilvik fyrir hvert, eins og að nota WebSockets fyrir rauntíma spjallforrit).

## 4. Málfræði (Syntax) og sérkenni forritunarmála

Í viðtali hefurðu ekki aðgang að sjálfvirkri útfyllingu (autocomplete) í IDE þínu eða StackOverflow. Þú þarft að kunna málfræði valins forritunarmáls (Python, Java, C++, o.s.frv.) fullkomlega.

*   **Framhlið (Python):** Hvernig raðarðu orðabók (dictionary) eftir gildum hennar í lækkandi röð?
*   **Bakhlið:** `sorted(my_dict.items(), key=lambda x: x[1], reverse=True)`

## Af hverju að nota Flashcards World fyrir forritunarundirbúning?

*   **Syntax Highlighting:** Þú getur auðveldlega bætt kóðabútum við leifturspjöldin þín með því að nota Markdown samþættinguna.
*   **Cross-Platform:** Farðu yfir Big O notation á símanum þínum á meðan þú ferðast í vinnu eða skóla.
*   **Dreifð upprifjun (Spaced Repetition):** Reikniritið okkar tryggir að þú farir oftar yfir erfiðustu kerfishönnunarspurningarnar en grunnmálfræðina sem þú kannt nú þegar.

Hættu að endurlesa bókina „Cracking the Coding Interview“ á aðgerðalausan hátt. Byrjaðu að endurheimta upplýsingar á virkan hátt (active recall) með leifturspjöldum og mættu sjálfstraust í næsta tæknilega viðtal.
