# Jak wykorzystać fiszki do zdania rozmów kwalifikacyjnych z programowania

Przygotowanie do technicznych rozmów kwalifikacyjnych w najlepszych firmach technologicznych (często nazywanych FAANG lub MAANG) może być przytłaczające. Z setkami struktur danych, algorytmów i koncepcji projektowania systemów do zapamiętania, samo rozwiązywanie problemów na LeetCode nie zawsze wystarcza.

Wielu odnoszących sukcesy inżynierów oprogramowania wykorzystuje **fiszki z rozłożonymi w czasie powtórkami (spaced repetition)** jako tajną broń do zapamiętywania skomplikowanych technicznych pojęć. Oto jak możesz użyć Flashcards World, aby przygotować się do następnej rozmowy kwalifikacyjnej.

## 1. Zapamiętywanie złożoności czasowej i przestrzennej (Notacja Big O)

Podczas rozmowy kwalifikacyjnej musisz nie tylko rozwiązać problem; musisz znać wydajność swojego rozwiązania. Jeśli rekruter zapyta: "Czy możemy to zrobić lepiej niż O(N^2)?", musisz od razu znać złożoności czasowe alternatywnych struktur danych.

**Jak tworzyć fiszki:**
*   **Przód:** Jaka jest średnia i najgorsza złożoność czasowa wyszukiwania w Hash Map?
*   **Tył:** Średnia: O(1). Najgorsza: O(N) (jeśli jest wiele kolizji hashów).
*   **Przód:** Jaka jest złożoność czasowa sortowania tablicy za pomocą Merge Sort?
*   **Tył:** O(N log N) zarówno dla przypadku średniego, jak i najgorszego. Złożoność przestrzenna to O(N).

Stwórz dedykowaną talię na "Złożoności Big O" i powtarzaj ją codziennie.

## 2. Rozpoznawanie wzorców algorytmów

Zamiast próbować zapamiętać dokładne rozwiązania kodowe dla 500 różnych problemów, użyj fiszek do zapamiętywania **wzorców**. Gdy rozpoznasz wzorzec, będziesz potrafił napisać kod.

**Jak tworzyć fiszki:**
*   **Przód:** Wyzwalacz wzorca: "Znajdź najkrótszą ścieżkę w grafie nieskierowanym."
*   **Tył:** Przeszukiwanie wszerz (BFS) z użyciem kolejki (Queue).
*   **Przód:** Wyzwalacz wzorca: "Znajdź wszystkie kombinacje lub permutacje tablicy."
*   **Tył:** Backtracking / Przeszukiwanie w głąb (DFS) z użyciem rekurencji.
*   **Przód:** Wyzwalacz wzorca: "Znajdź maksymalną sumę podtablicy o stałym rozmiarze K."
*   **Tył:** Technika przesuwnego okna (Sliding Window).

## 3. Słownictwo i kompromisy w projektowaniu systemów

Rozmowy na temat projektowania systemów wymagają od Ciebie zważenia różnych kompromisów (trade-offs) architektonicznych. Fiszki są idealne do zapamiętywania zalet i wad różnych technologii.

**Jak tworzyć fiszki:**
*   **Przód:** SQL vs. NoSQL: Kiedy powinieneś wybrać NoSQL?
*   **Tył:** 1. Gdy dane są nieustrukturyzowane lub nie mają schematu. 2. Gdy potrzebujesz szybkiego skalowania poziomego (sharding). 3. Do szybkiego prototypowania.
*   **Przód:** Jaka jest różnica między Long Polling, WebSockets a Server-Sent Events (SSE)?
*   **Tył:** (Wymień definicje i specyficzny przypadek użycia dla każdego, np. użycie WebSockets do aplikacji czatu w czasie rzeczywistym).

## 4. Składnia i specyficzne cechy języka

Na rozmowie kwalifikacyjnej nie masz dostępu do autouzupełniania w swoim IDE ani do StackOverflow. Musisz perfekcyjnie znać składnię wybranego języka (Python, Java, C++ itp.).

*   **Przód (Python):** Jak posortować słownik po jego wartościach w porządku malejącym?
*   **Tył:** `sorted(my_dict.items(), key=lambda x: x[1], reverse=True)`

## Dlaczego warto używać Flashcards World do nauki kodowania?

*   **Podświetlanie składni:** Możesz łatwo dodawać fragmenty kodu do swoich fiszek za pomocą integracji z Markdown.
*   **Wieloplatformowość:** Przeglądaj notacje Big O na telefonie podczas dojazdów do pracy lub szkoły.
*   **Rozłożone w czasie powtórki (Spaced Repetition):** Nasz algorytm dba o to, abyś częściej powtarzał najtrudniejsze pytania z projektowania systemów niż podstawową składnię, którą już znasz.

Przestań biernie czytać książkę "Cracking the Coding Interview". Zacznij aktywnie przywoływać informacje za pomocą fiszek i pójdź na kolejną techniczną rozmowę kwalifikacyjną z pewnością siebie.
