Osoby, które rozmawiają o pracę w drugim języku, rzadko polegają na kodzie. Polegają na ciszy: dwie minuty pisania bez słowa albo rozwiązanie nie tego problemu, bo zabrakło pytania. Rekruter ocenia tylko to, co słyszy. Ten poradnik pokazuje, jak sprawić, żeby Twój tok myślenia był słyszalny, prostym angielskim.
01Czego słucha rekruter
Na większości rozmów z kodowaniem komunikacja jest częścią oceny. Wskazówki Microsoftu do rozmów technicznych i porady Google zachęcają, by tłumaczyć tok myślenia i zadawać pytania doprecyzowujące. W praktyce oceniane są zwykle cztery rzeczy:
Doprecyzowanie
Sprawdzasz problem, zanim go rozwiążesz.
Plan
Wyjaśniasz podejście przed kodowaniem.
Kompromisy
Mówisz, dlaczego to wybierasz i ile to kosztuje.
Testy
Sprawdzasz swój kod na przykładach i przypadkach brzegowych.
Żadna z tych rzeczy nie wymaga zaawansowanego angielskiego. Krótkie, jasne zdania działają lepiej niż długie i idealne.
02Doprecyzuj, zanim zaczniesz kodować
Poświęć pierwsze dwie, trzy minuty na ustalenie, co rozwiązujesz. To normalne, a przy okazji daje czas do namysłu.
- Powtórz problem własnymi słowami: „So we need to…”
- Zapytaj o dane wejściowe: rozmiar, typ, puste wartości, duplikaty, liczby ujemne.
- Zapytaj o ograniczenia: czas czy pamięć i czy na początek wystarczy proste rozwiązanie.
- Ustalcie mały przykład i oczekiwany wynik.
Jeśli nie rozumiesz słowa w treści zadania, zapytaj. „Sorry, what do you mean by a ‘stable’ sort here?” to dobre pytanie, a nie słabość.
03Myśl na głos, ale bez gadulstwa
Myślenie na głos nie polega na opisywaniu każdego naciśnięcia klawisza. Mów o decyzjach, nie o pisaniu.
Używaj prostych drogowskazów: „First…”, „Next…”, „The tricky part is…”, „Now I’m handling the edge case where…”. Jeśli potrzebujesz chwili ciszy, powiedz to: „Give me thirty seconds to think about this.”
04Wymawiaj kod i złożoność na głos
Wiele osób zna Big-O doskonale, ale nigdy nie mówiło o nim po angielsku. Ćwicz te formy, aż zaczną brzmieć naturalnie:
| Zapis | Wymowa |
|---|---|
| O(1) | “constant time” · “O of one” |
| O(n) | “linear time” · “O of n” |
| O(n log n) | “O of n log n” |
| O(n²) | “O of n squared” · “quadratic” |
| arr[i] | “array at index i” · “the i-th element” |
| i++ | “increment i” |
| != | “not equal to” |
| null / None | “null” · “none” · “if it’s empty” |
Każdy wybór uzasadniaj słowem „because”: „I’m using a set because I only need to know whether I’ve seen the value.” Potem nazwij koszt: „The trade-off is extra memory.”
05Gdy utkniesz
Utknięcie jest normalne; szkodzi milczenie albo przepraszanie za swój angielski. Rekruterzy często chcą zobaczyć, jak wracasz na tor.
- Wróć do przykładu i przejdź go ręcznie, na głos.
- Nazwij problem: „The issue is that I’m visiting nodes twice.”
- Zaproponuj dwie opcje i zapytaj, który kierunek wolą.
- Przyjmij podpowiedź spokojnie: „That helps, thank you. So if I…”
06Projektowanie systemów po angielsku
Rozmowa o projektowaniu systemów to głównie mówienie, więc struktura liczy się bardziej niż słownictwo. Trzymaj się zawsze tej kolejności:
Wymagania
Funkcjonalne i niefunkcjonalne: użytkownicy, skala, opóźnienia, spójność.
Szacunki
Przybliżone liczby: zapytania na sekundę, dane na rok.
Ogólny obraz
Główne komponenty i przepływ danych między nimi.
Szczegóły
Jeden lub dwa komponenty dokładnie, wybrane z rekruterem.
Kompromisy
Co zmienić przy dziesięciokrotnym obciążeniu i co może zawieść.
Powiedz o kompromisie, zanim padnie pytanie: „I’d accept eventual consistency for the feed, because a few seconds of delay is fine for users.”
07Zwroty na każdy etap
| Etap | Zwroty |
|---|---|
| Powtórzenie problemu | “Just to make sure I understand: we get a list of transactions, and we need the top three customers by total spend?” |
| Pytania doprecyzowujące | “Can the input be empty?” · “Are the values always positive?” · “Roughly how large can n get?” · “Should I optimise for time or memory?” |
| Wyjaśnienie planu | “Let me walk through a small example first.” · “My plan is: first…, then…, and finally….” |
| Wybory i kompromisy | “I’m choosing a hash map here because lookups are constant time.” · “The trade-off is extra memory.” |
| Testowanie kodu | “Let me test this with the edge cases: an empty list, one element, and duplicates.” · “I think there’s an off-by-one here; let me check.” |
| Gdy utkniesz | “Let me think about this for a moment.” · “Could I talk through two options and get your view?” · “Would a hint be okay here?” |
| Projektowanie systemów | “Before I design anything, can we agree the requirements?” · “Let me estimate the load first.” · “The bottleneck here is likely the database writes.” |
| Gdy czegoś nie dosłyszysz | “Sorry, could you repeat the last part?” · “Do you mean X or Y?” |
| Zamiast | Spróbuj |
|---|---|
| “I will do the for.” | “I’ll loop through the list.” |
| “This is more fast.” | “This is faster.” · “This scales better.” |
| “I don’t know.” | “I haven’t used that, but here’s how I’d approach it.” |
| “Wait. Wait. Wait.” | “Give me a moment to think this through.” |
| “It’s finished.” | “I think this works. Let me test it with a couple of cases.” |
08Przykład: pierwsze dziesięć minut rozmowy z kodowaniem
Wymyślony zapis klasycznego zadania. Przeczytaj na głos część kandydata i zwróć uwagę, jak mało trudnego angielskiego potrzeba.
Two Sum, omówione na głos
Interviewer: Given an array of integers and a target, return the indices of two numbers that add up to the target.
Candidate: Okay. Just to check: can I assume there’s exactly one solution? And can I use the same element twice?
Interviewer: Exactly one solution, and no, not the same element.
Candidate: Got it. Let me try a small example: two, seven, eleven, fifteen, with target nine. The answer is indices zero and one.
Candidate: The obvious approach is to check every pair. That’s O of n squared. I think we can do better with a hash map: as I go through the array, I store each number and its index, and for each new number I check whether target minus that number is already in the map.
Interviewer: Sounds good. What’s the complexity?
Candidate: One pass, so linear time, and linear extra memory for the map. If memory were tight, I could sort and use two pointers, but then I’d lose the original indices unless I store them. Shall I go with the hash map?
Interviewer: Yes, go ahead.
Candidate: [after coding] Let me test it. With the example, at seven the complement is two, which is in the map at index zero, so it returns zero and one. Now an edge case: negative numbers work the same way. And if the array has two elements, it still works.
09Przed rozmową techniczną
- Powtarzam problem i zadaję co najmniej dwa pytania doprecyzowujące.
- Ustalam mały przykład przed kodowaniem.
- Wyjaśniam plan w trzech zdaniach, zanim zacznę pisać.
- Umiem wymówić Big-O i typowy kod po angielsku.
- Podaję powód z „because” i nazywam kompromis.
- Testuję kod na głos na przypadku brzegowym.
- Mam gotowe zdanie na moment, gdy utknę.
