Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik elektroniki i informatyki medycznej
  • Kwalifikacja: MED.07 - Montaż i eksploatacja urządzeń elektronicznych i systemów informatyki medycznej
  • Data rozpoczęcia: 4 maja 2026 23:39
  • Data zakończenia: 4 maja 2026 23:48

Egzamin zdany!

Wynik: 40/40 punktów (100,0%)

Wymagane minimum: 20 punktów (50%)

Nowe
Analiza przebiegu egzaminu- sprawdź jak rozwiązywałeś pytania
Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

Funkcja f(n) = nf(n-1) dla n>1 w przeciwnym wypadku f(n) = 1 jest przykładem

A. obliczania wyrazu ciągu Fibonacciego.
B. rekurencji.
C. iteracji.
D. obliczania n–tej potęgi liczby n.
Funkcja f(n) = n*f(n-1) dla n>1 i f(n) = 1 w przeciwnym wypadku jest klasycznym przykładem rekurencji. W informatyce, rekurencja oznacza, że dana funkcja wywołuje samą siebie, aż do uzyskania tzw. warunku bazowego (czyli sytuacji, kiedy przestaje się wywoływać rekurencyjnie). Dokładnie tak jest w tym przypadku – dla n równego 1 lub niższego, funkcja zwraca 1 i nie wywołuje się dalej, a dla n większego od 1, każdorazowo wywołuje się z argumentem mniejszym o 1. Typowym przykładem tego typu funkcji jest silnia, czyli operacja matematyczna wykorzystywana m.in. w kombinatoryce, kryptografii czy analizie algorytmów. Takie podejście, choć bardzo eleganckie i naturalne w wielu zastosowaniach matematycznych, w praktyce programistycznej wymaga ostrożności – nieumiejętne stosowanie rekurencji może prowadzić do przepełnienia stosu (stack overflow). Optymalnie, przy dużych danych warto sięgnąć po podejście iteracyjne lub tzw. rekurencję ogonową, która bywa lepiej wspierana przez niektóre kompilatory. Moim zdaniem, umiejętność rozpoznania i zrozumienia rekurencji jest jedną z kluczowych kompetencji każdego programisty – czy to w Pythonie, Javie, czy C++. Warto też zauważyć, że rekurencja, chociaż czasem wydaje się mniej wydajna, pozwala bardzo klarownie zapisać nawet złożone problemy, na przykład przy przeszukiwaniu struktur drzewiastych czy rozwiązywaniu łamigłówek typu wieże Hanoi.

Pytanie 2

W celu archiwizacji danych w systemie Linux wymagane jest utworzenie archiwum. Korzystając z zamieszczonej w ramce pomocy dobierz odpowiednie polecenie.

-c, --createutworzenie nowego archiwum
-z, --gzipfiltrowanie archiwum przez gzip
-v, --verbosewypisywanie szczegółów o przetwarzanych plikach
-f, --file=ARCHIWUMużycie pliku lub urządzenia ARCHIWUM
-x, --extractrozpakowanie plików z archiwum
-t, --listwypisanie zawartości archiwum
-r, --appenddołączenie plików na końcu archiwum
-u, --updatedołączenie tylko plików nowszych niż kopie w archiwum
A. tar – tvf
B. tar – rvf
C. tar – cvf
D. tar – xvf
Polecenie tar –cvf to absolutna podstawa, jeśli chodzi o archiwizację danych w systemach Linux. Flaga -c, jak pokazuje tabela pomocy, oznacza utworzenie nowego archiwum, a -v pozwala na obserwowanie, co dokładnie jest do niego dodawane – co, moim zdaniem, bywa przydatne, zwłaszcza gdy pracujesz z większą liczbą plików i chcesz mieć szybki podgląd postępu. Opcja -f wskazuje miejsce docelowe archiwum, czyli nazwę pliku (na przykład backup.tar). Bardzo często w praktyce dodaje się też -z do kompresji przez gzip, czyli tar -czvf, co pozwala mocno zmniejszyć rozmiar archiwum. Warto przyjąć zasadę, żeby zawsze jasno nazywać pliki wynikowe i trzymać się ustalonych konwencji nazewnictwa, bo potem łatwiej znaleźć archiwum wśród setek innych plików. Z mojego doświadczenia archiwizacja przez tar to nie tylko backupy – sporo administratorów korzysta z tej metody do migracji środowisk, przenoszenia całych katalogów konfiguracyjnych czy nawet przygotowywania snapshotów aplikacji na serwerach produkcyjnych. Dobrą praktyką jest też testowanie potem archiwum przez tar -tvf, żeby sprawdzić, czy wszystko się poprawnie zapisało. Ogólnie, polecenie tar –cvf to żelazny standard i aż dziw bierze, jak często ktoś się myli, bo nie do końca rozumie, co oznacza każda flaga – choć to przecież fundamenty pracy w Linuxie.

Pytanie 3

Usterka programowa uniemożliwia uruchomienie systemu Windows. W celu diagnozy i usunięcia usterki wskazane jest

A. uruchomienie programu do defragmentacji dysku HDD.
B. przeinstalowanie systemu Windows.
C. uruchomienie komputera w trybie awaryjnym.
D. przeprowadzenie diagnostyki podzespołów.
Uruchomienie komputera w trybie awaryjnym to zdecydowanie najbardziej sensowny krok przy diagnozowaniu usterki programowej, która uniemożliwia start systemu Windows. Tryb awaryjny to specjalny tryb pracy systemu, który ładuje tylko podstawowe sterowniki i minimalny zestaw usług niezbędnych do funkcjonowania Windowsa. Z mojego doświadczenia wynika, że właśnie w ten sposób najłatwiej jest zidentyfikować, czy problem powoduje na przykład wadliwy sterownik, konflikt oprogramowania czy może uszkodzony plik systemowy. W trybie awaryjnym użytkownik może przeprowadzić naprawę systemu poprzez narzędzia typu Przywracanie systemu, usunąć niedawno zainstalowane oprogramowanie lub nawet wycofać aktualizacje, które mogły spowodować awarię. W praktyce, bardzo często to właśnie ten tryb pozwala dotrzeć do przyczyny problemu bez ryzyka dalszego uszkodzenia systemu. Branżowe standardy IT jednoznacznie wskazują, że rozpoczęcie od trybu awaryjnego to najlepsza praktyka – pozwala uniknąć niepotrzebnych, kosztownych działań, takich jak reinstalacja Windows. Moim zdaniem, każdy kto choć raz rozwiązywał problem z uruchomieniem Windowsa, doceni możliwości tego trybu – zapewnia on naprawdę szerokie pole manewru. Niektórzy nawet mówią, że to ostatnia deska ratunku przed poważniejszą ingerencją. Dlatego warto znać i korzystać z tej opcji, zanim sięgnie się po bardziej radykalne środki.

Pytanie 4

Programowanie obiektowe wykorzystuje dziedziczenie, które polega na

A. ochronie danych w klasie przed bezpośrednim dostępem spoza klasy.
B. tworzeniu nowych obiektów za pomocą konstruktorów.
C. uogólnieniu pewnych cech w klasie bazowej.
D. budowie nowych klas na podstawie już istniejących.
Dziedziczenie w programowaniu obiektowym to naprawdę mocny mechanizm – moim zdaniem jeden z najważniejszych, jakie daje OOP. Pozwala na tworzenie nowych klas (czyli tzw. klas pochodnych) na bazie już istniejących (klas bazowych). W praktyce wygląda to tak, że klasa dziedzicząca przejmuje pola i metody po klasie bazowej, ale może je też rozszerzyć lub zmienić według potrzeb. To jest bardzo wygodne, gdy chcemy uniknąć powielania kodu – raz zdefiniowane cechy, np. w klasie 'Pojazd', mogą być potem wykorzystane przez klasy takie jak 'Samochód' czy 'Motocykl'. Co ciekawe, różne języki programowania podchodzą do tego trochę inaczej – na przykład w Javie nie ma wielodziedziczenia klas, ale są interfejsy, a w C++ już można dziedziczyć po wielu klasach naraz, choć to bywa ryzykowne. Branżowe praktyki zalecają, żeby nie przesadzać z głębokością dziedziczenia, bo to może zaciemniać kod i utrudnić jego utrzymanie. Lepiej wykorzystywać kompozycję, gdy tylko się da, ale dziedziczenie świetnie się sprawdza do modelowania hierarchii i wspólnych zachowań. W realnych projektach bardzo często widać, jak dziedziczenie oszczędza czas i pozwala programistom skupić się na nowych cechach, a nie przepisywaniu tego samego od zera.

Pytanie 5

Które polecenie umożliwia śledzenie drogi pakietów w sieci?

A. ifconfig
B. ping
C. ipconfig
D. tracert
Polecenie tracert (albo traceroute na systemach Linux) to jedno z podstawowych narzędzi diagnostycznych w sieciach komputerowych. Pozwala ono na śledzenie trasy, jaką pakiet IP pokonuje od komputera źródłowego do wskazanego hosta docelowego. To bardzo przydatne, gdy próbujesz zdiagnozować, gdzie na trasie pojawiają się opóźnienia czy utraty pakietów. Z technicznego punktu widzenia tracert wykorzystuje pole TTL (Time To Live) w nagłówku pakietu IP. Każdy kolejny pakiet wysyłany przez tracert ma zwiększany TTL, co powoduje, że po drodze routery odsyłają pakiety ICMP „Time Exceeded”, a my widzimy każdy kolejny przeskok (hop). To taka swoista mapa przejścia pakietu przez wszystkie routery pośrednie. Moim zdaniem umiejętność korzystania z tracert to absolutna podstawa dla każdego administratora czy nawet zwykłego technika sieciowego. W praktyce często przydaje się, gdy ktoś mówi, że 'internet nie działa' – szybko można sprawdzić, na którym etapie coś się psuje, czy problem jest lokalny czy globalny. W wielu firmach, zwłaszcza tych z rozproszoną infrastrukturą, codziennie korzysta się z takich narzędzi, żeby wykryć błędy routingu albo nieprawidłową konfigurację routerów. Dla ciekawych: w standardzie IPv6 polecenie funkcjonuje analogicznie, chociaż czasem są drobne różnice w obsłudze ICMPv6. Z mojego doświadczenia – niejedną zagadkową awarię udało mi się wytropić właśnie z pomocą tracert. Warto pamiętać, że nie wszystkie routery odpowiadają na te pakiety – czasem widać gwiazdki, ale to już inna historia związana z politykami bezpieczeństwa.

Pytanie 6

Znak ~ na początku ciągu znaków w systemach uniksowych oznacza

A. plik systemowy.
B. plik tymczasowy.
C. katalog główny.
D. katalog domowy.
Znak ~ na początku ścieżki w systemach uniksowych to taki trochę skrót-klucz, który odwołuje się bezpośrednio do katalogu domowego użytkownika. W praktyce, jak wpiszesz np. cd ~ w terminalu, to od razu przenosi cię do twojego katalogu domowego – czyli miejsca, gdzie masz swoje dokumenty, konfiguracje, pulpit, pliki robocze i całą resztę rzeczy, za które odpowiadasz bezpośrednio jako użytkownik w systemie. To się sprawdza genialnie, bo nie musisz pamiętać czy katalog domowy to /home/jan, /Users/ania albo coś jeszcze innego – system sam wie, o którego użytkownika chodzi. Zresztą, jeśli chcesz wejść do katalogu domowego innego użytkownika, wpisujesz np. ~marek i terminal zabierze cię do /home/marek. W skryptach Bash i innych powłokach uniksowych to rozszerzanie znaku ~ na konkretną ścieżkę jest standardem od lat i praktycznie każdy administrator korzysta z tego automatycznie. To jeden z tych drobiazgów, które mega przyspieszają pracę na konsoli. Moim zdaniem, jak ktoś często korzysta z powłoki, to nie wyobraża sobie codziennej pracy bez tego symbolu. Ciekawe jest też to, że pliki tymczasowe i systemowe mają zupełnie inne notacje – tutaj ~ jest ściśle powiązany z profilem użytkownika i nie ma nic wspólnego z katalogiem głównym systemu, czyli /. Warto to zapamiętać.

Pytanie 7

Katalog /dev w Linuxie zawiera pliki

A. binarne narzędzi systemowych.
B. niezbędne do uruchamiania systemu.
C. konfiguracyjne, systemowe.
D. do komunikacji systemu z urządzeniami.
Katalog /dev w systemach Linux to zdecydowanie jedno z ciekawszych miejsc w strukturze plików. Moim zdaniem często bywa niedoceniany przez początkujących, a przecież to tutaj znajdziesz pliki urządzeń, które pozwalają systemowi komunikować się bezpośrednio ze sprzętem. Pliki te, nazywane plikami urządzeń (device files), nie są zwykłymi plikami z danymi – w rzeczywistości reprezentują interfejsy do fizycznych lub wirtualnych urządzeń, takich jak dyski twarde (/dev/sda), terminale (/dev/tty), czy pamięć RAM (/dev/mem). To jest genialne rozwiązanie: każde urządzenie jest dostępne jak plik – można je czytać, zapisywać, a nawet przekierowywać do nich strumienie. Z mojego doświadczenia, jeśli chcesz np. sklonować cały dysk, wystarczy użyć komendy dd na /dev/sda – żaden magiczny interfejs, po prostu plik! Standard Filesystem Hierarchy Standard (FHS) wyraźnie określa, że /dev służy właśnie do tego celu. Warto pamiętać, że pliki te są tworzone dynamicznie – często przez udev – więc na nowoczesnych systemach zawartość tego katalogu może się zmieniać wraz z podłączaniem i odłączaniem sprzętu. W praktyce, rozumienie działania /dev bardzo pomaga np. przy diagnozowaniu problemów sprzętowych, konfiguracji RAID czy nawet wirtualizacji. To taka baza wypadowa dla każdego, kto poważnie podchodzi do administracji Linuksem.

Pytanie 8

Który system plików zapewnia największe bezpieczeństwo danych w systemie Windows?

A. NTFS
B. FAT 16
C. FAT 32
D. ext4
NTFS to zdecydowanie najlepszy wybór, jeśli chodzi o bezpieczeństwo danych w systemie Windows. Po pierwsze, ten system plików pozwala na zaawansowane zarządzanie uprawnieniami – można bardzo precyzyjnie ustawiać, kto ma dostęp do jakiego pliku czy folderu, a to w praktyce daje ogromne możliwości kontroli. Jedną z najważniejszych cech NTFS jest obsługa szyfrowania plików (EFS), co wrażliwych danych zabezpiecza przed dostępem niepowołanych użytkowników. No i oczywiście, NTFS ma wbudowane mechanizmy odzyskiwania po awarii – na przykład dziennikowanie operacji (tzw. journaling), dzięki czemu podczas nagłego zaniku zasilania system jest w stanie automatycznie naprawić uszkodzone struktury plików. W przedsiębiorstwach NTFS to standard, bo pozwala na stosowanie polityk bezpieczeństwa zgodnych z wymaganiami ISO/IEC 27001 czy politykami RODO. Moim zdaniem, dla każdego, kto chociaż trochę dba o integralność i bezpieczeństwo danych, inne opcje nie mają nawet podejścia. Co ciekawe, NTFS obsługuje także limity pojemności, kompresję plików czy tworzenie kopii zapasowych typu shadow copy. I jeszcze taka ciekawostka – większość zaawansowanych narzędzi Windows nawet nie pozwala korzystać z dysków FAT, jeśli trzeba ustawić uprawnienia albo szyfrować katalogi. W sumie, dziś to już absolutna podstawa w każdej firmowej sieci.

Pytanie 9

Nie uzyskamy pomocy na temat polecenia „net” w wierszu poleceń systemu Windows wpisując

A. help net
B. net help
C. net /?
D. net ?
Polecenie „help net” w systemie Windows nie wyświetli pomocy na temat polecenia „net”, ponieważ składnia tego polecenia nie jest zgodna ze sposobem wywoływania pomocy w środowisku cmd. Moim zdaniem to trochę mylące, bo w innych systemach operacyjnych czy narzędziach wpisanie „help” przed nazwą komendy faktycznie daje oczekiwany rezultat, ale tutaj Windows interpretuje „help” raczej jako polecenie do listy ogólnej pomocy, a nie szczegółowej dla danego polecenia. Z doświadczenia wiem, że jeśli chcemy uzyskać szczegółowe informacje o poleceniu „net” i jego składni, powinniśmy użyć „net help” lub „net /?” – oba te wywołania są zgodne ze standardami środowiska Windows i prezentują listę dostępnych podpoleceń oraz ich opisy. Praktycznie rzecz biorąc, to bardzo przydatne, bo często trzeba sobie przypomnieć składnię polecenia „net use” albo sprawdzić, jak skonfigurować udostępnianie zasobów sieciowych. Warto wiedzieć, że podobny schemat pomocy działa dla wielu innych poleceń w Windows, np. „ipconfig /?” czy „robocopy /?”. Branżowe dobre praktyki zalecają korzystanie z wbudowanej pomocy, bo minimalizuje to ryzyko popełnienia błędu i pozwala szybko przypomnieć sobie rzadziej używane parametry. Moim zdaniem to umiejętność, która naprawdę się przydaje przy pracy z systemami Windows, szczególnie podczas administracji siecią czy rozwiązywania problemów na stanowiskach użytkowników.

Pytanie 10

Operacje stałoprzecinkowe w procesorze wykonuje jednostka oznaczona jako

A. GPU
B. FPU
C. ALU
D. DSP
Jednostka ALU, czyli Arithmetic Logic Unit, to absolutna podstawa każdego procesora. To właśnie tutaj odbywają się wszystkie operacje stałoprzecinkowe: dodawanie, odejmowanie, przesunięcia bitowe, porównania czy proste operacje logiczne typu AND, OR. W praktyce, jak piszemy nawet najprostszy kawałek kodu w C czy assemblerze, to praktycznie każda instrukcja arytmetyczna przechodzi przez ALU. Moim zdaniem warto pamiętać, że ALU działa na liczbach całkowitych, a nie zmiennoprzecinkowych. W komputerach PC, ale też w mikrokontrolerach typu AVR czy ARM Cortex-M, ALU obsługuje praktycznie wszystkie codzienne operacje matematyczne. W sumie to podstawa np. przy obsłudze liczników, timerów, adresacji pamięci, operacjach na portach I/O. Standardy projektowania procesorów wyraźnie rozgraniczają ALU od innych jednostek, które odpowiadają za specjalistyczne zadania, np. FPU do operacji zmiennoprzecinkowych. Praktyczna rada: jak pracujecie z niskopoziomowym kodem, warto zaglądać do dokumentacji i zobaczyć, które instrukcje korzystają z ALU. Z mojego doświadczenia, zrozumienie działania ALU bardzo przydaje się przy optymalizowaniu szybkości programów i debugowaniu problemów sprzętowych. W wielu systemach embedded, gdzie liczy się każdy cykl zegara, znajomość możliwości ALU potrafi uratować projekt.

Pytanie 11

Który sterownik odpowiada za bezpośredni dostęp do pamięci?

A. DMI
B. IRQ
C. DMA
D. PIO
Sterownik DMA (Direct Memory Access) to naprawdę kluczowy element w architekturze komputerów, jeśli chodzi o sprawne przesyłanie danych. Chodzi tu o to, że urządzenia peryferyjne, jak np. karty sieciowe, dyski twarde czy nawet nowoczesne karty dźwiękowe, mogą przekazywać lub odbierać informacje bezpośrednio do/z pamięci RAM, praktycznie z pominięciem procesora. To bardzo usprawnia pracę systemu, bo CPU nie musi zajmować się każdym bajtem przesyłu — po prostu zleca zadanie kontrolerowi DMA i wraca do swoich głównych zadań. W praktyce, zwłaszcza w systemach typu embedded albo przy intensywnych operacjach na dużych plikach czy transmisjach multimedialnych, DMA skraca czas przesyłu i odciąża procesor. W branży to wręcz standard wykorzystywania DMA, żeby uzyskać wyższą przepustowość i mniejsze opóźnienia, co jest istotne na przykład w systemach czasu rzeczywistego. Moim zdaniem, jak ktoś chce być dobrym technikiem, musi rozumieć, jak działa DMA i kiedy warto go stosować — czasem to po prostu jedyna opcja, bo bezpośredni dostęp do pamięci pozwala uzyskać dużo większą wydajność niż klasyczne rozwiązania programowe. Nawet BIOS i nowoczesne systemy operacyjne korzystają z DMA, żeby efektywnie zarządzać transferami danych. To taki trochę niewidzialny bohater każdej płyty głównej, a jak się to raz zrozumie, to już później łatwiej łapie się koncepcję działania zaawansowanych systemów komputerowych.

Pytanie 12

Do zaktualizowania rekordu tabeli należy zastosować polecenie

A. INSERT
B. ALTER
C. UPDATE
D. SELECT
Polecenie UPDATE w języku SQL służy właśnie do modyfikowania danych już istniejących w tabeli bazy danych. To taki podstawowy, codzienny „chleb powszedni” każdego, kto zarządza bazami relacyjnymi. Za jego pomocą możesz zmienić dowolne pole w pojedynczym rekordzie lub nawet zaktualizować wiele rekordów jednocześnie, oczywiście jeśli przemyślisz dobrze klauzulę WHERE. Przykład z życia: chcesz zmienić adres e-mail użytkownika albo zaktualizować cenę produktu po podwyżce w hurtowni. Polecenie UPDATE pozwala na to bez konieczności kasowania i ponownego dodawania rekordu. Z mojego doświadczenia bardzo ważne jest, żeby nigdy nie pomijać warunku WHERE, bo wtedy zaktualizujesz wszystkie rekordy w tabeli i możesz nieźle namieszać – sam się kiedyś na tym przejechałem. W środowiskach produkcyjnych stosuje się dodatkowo transakcje i backupy przed większymi aktualizacjami, żeby uniknąć chaosu. No i, co istotne, UPDATE jest częścią standardu SQL (ANSI SQL), więc działa podobnie w większości popularnych systemów, np. MySQL, PostgreSQL czy MS SQL Server. Moim zdaniem, dobra znajomość tego polecenia to podstawa dla każdego przyszłego administratora czy developera baz danych. Warto pamiętać, że poprzez UPDATE można nie tylko zmieniać zwykłe pola, ale też pracować z bardziej złożonymi wyrażeniami, np. inkrementować wartości liczników czy korzystać z podzapytań.

Pytanie 13

Które systemy operacyjne mogą być zainstalowane na dysku, którego działanie obrazuje GParted?

Ilustracja do pytania
A. Linux, Windows
B. Mac, Mac OS
C. Linux, Mac OS
D. Windows, Mac OS
Na tym zrzucie z GParted dokładnie widać, jakie partycje istnieją na dysku i jakie systemy plików są na nich założone. Najważniejsze, co tu rzuca się w oczy, to obecność partycji NTFS oraz EXT4. NTFS to typowy system plików używany przez Windows, natomiast EXT4 jest domeną Linuksa. Dodatkowo jest też partycja EFI (FAT32), która jest wykorzystywana w nowoczesnych komputerach z UEFI do uruchamiania systemów operacyjnych – zarówno Windows, jak i Linux potrafią korzystać z EFI. No i jeszcze jest linux-swap, czyli przestrzeń wymiany dla Linuksa. To jednoznacznie pokazuje, że na takim układzie partycji spokojnie można zainstalować i Windowsa, i Linuksa. Moim zdaniem to bardzo praktyczne rozwiązanie, bo daje możliwość tzw. dualboota – czyli wyboru, który system chcesz uruchomić podczas startu komputera. W praktyce wiele osób w technikum czy na studiach z informatyki korzysta z takiego rozwiązania, żeby mieć dostęp do narzędzi dostępnych tylko na jednym z tych systemów. Dobrą praktyką jest zawsze wydzielać osobną partycję EFI oraz osobną partycję wymiany dla Linuksa. Dodatkowo, NTFS jest uniwersalny dla Windowsa, a EXT4 zdecydowanie lepiej działa z Linuksem pod względem wydajności i bezpieczeństwa danych. To wszystko razem powoduje, że tylko odpowiedź Linux, Windows jest poprawna w tym kontekście. Takie podejście jest zgodne z zaleceniami administratorów systemów i specjalistów ds. bezpieczeństwa IT.

Pytanie 14

W celu archiwizacji danych w systemie Windows, jest wymagane kopiowanie z katalogu źródłowego (kat_zrodlowy) do katalogu docelowego (kat_docelowy). Do kopiowania danych należy użyć polecenia

A. move kat_docelowy kat_zrodlowy\dane.txt
B. move kat_zrodlowy/dane.txt kat_docelowy
C. copy kat_zrodlowy\dane.txt kat_docelowy
D. copy kat_docelowy kat_zrodlowy/dane.txt
Polecenie copy kat_zrodlowy\dane.txt kat_docelowy jest najbardziej właściwe w kontekście archiwizacji danych w systemie Windows, bo wykorzystuje ono wbudowaną w system komendę copy. Ta komenda służy właśnie do kopiowania plików z jednego miejsca do drugiego — nie przenosi ich, tylko zostawia oryginał w katalogu źródłowym, co jest kluczowe, gdy chodzi o robienie kopii zapasowej czy archiwizacji. Warto też zwrócić uwagę na składnię ścieżek — w Windowsie standardem są ukośniki w lewą stronę (\), co bywa mylące dla osób przyzwyczajonych do systemów linuksowych, gdzie stosuje się /. Dzięki temu poleceniu można zautomatyzować proces backupu, np. w skryptach wsadowych, które regularnie kopiują ważne dane do określonego katalogu docelowego. W praktyce — gdybyśmy chcieli zarchiwizować plik dane.txt, zachowując jego oryginał, zawsze powinniśmy sięgać po copy. To też zgodne z polityką bezpieczeństwa danych: najpierw robimy kopię, potem ewentualnie usuwamy oryginał, jeśli zachodzi taka potrzeba. Warto pamiętać, że copy umożliwia kopiowanie zarówno pojedynczych plików, jak i całych folderów (przy użyciu odpowiednich przełączników), co czyni ją narzędziem uniwersalnym w środowisku Windows. Moim zdaniem, znajomość tej komendy to podstawa dla każdego, kto chce poważnie podchodzić do pracy z danymi i ich zabezpieczaniem w systemach Microsoftu.

Pytanie 15

Które działanie nie odnosi się do podstawowej funkcji komputera?

A. Przechowywanie danych.
B. Przetwarzanie danych.
C. Dekodowanie rozkazów.
D. Diagnostyka systemu.
Diagnostyka systemu faktycznie nie jest podstawową funkcją komputera – to raczej dodatkowa czynność, którą wykonują specjalistyczne programy albo sam użytkownik, kiedy coś zaczyna szwankować. Komputer z założenia został stworzony do przetwarzania danych, przechowywania informacji oraz do dekodowania rozkazów, czyli po prostu do wykonywania instrukcji, jakie mu wydamy. Diagnostyka to taka „kontrola stanu technicznego” – sprzęt i systemy operacyjne mają narzędzia, które potrafią wykryć i zdiagnozować błędy, ale to nie jest ich główna rola. Moim zdaniem, patrząc na standardowe klasyfikacje – np. na to, co jest nazywane cyklem przetwarzania informacji przez komputer (ang. information processing cycle) – zawsze wymienia się: wejście danych, przetwarzanie, wyjście i przechowywanie. Diagnostyka mogłaby się pojawić jako funkcja pomocnicza, no powiedzmy – coś jak przegląd techniczny, a nie silnik, który napędza auto. W praktyce, w firmach IT czy nawet w codziennym użytkowaniu, diagnostyka przydaje się głównie wtedy, gdy występują problemy, a nie podczas typowego działania systemu. Oczywiście, istnieją specjalne narzędzia do monitoringu i diagnostyki, ale są one uruchamiane na żądanie, a nie w ramach podstawowych procesów komputerowych. Warto zapamiętać, że podstawą działania każdego komputera jest przetwarzanie, dekodowanie i przechowywanie danych – reszta to już dodatki, które mają usprawnić pracę lub rozwiązać pojawiające się trudności.

Pytanie 16

Aby dodać nowe konto „rejestracja” w systemie Windows, należy wykorzystać polecenie

A. net rejestracja \add user
B. add user rejestracja
C. net user rejestracja /add
D. user add rejestracja
Polecenie „net user rejestracja /add” to oficjalny i najlepiej udokumentowany sposób dodawania nowego konta użytkownika w systemach Windows z poziomu wiersza polecenia. Składnia tego polecenia opiera się na narzędziu systemowym „net”, które pozwala zarządzać użytkownikami i grupami bez korzystania z graficznego interfejsu. Dzięki temu można szybko i automatycznie tworzyć konta użytkowników, co jest bardzo przydatne np. w pracowniach szkolnych czy podczas wdrożeń większej liczby komputerów. Z mojego doświadczenia, administratorzy cenią sobie właśnie to polecenie, bo daje ono sporą kontrolę i można je wykorzystać w skryptach batch lub PowerShell. Dobrą praktyką jest od razu po utworzeniu konta nadać mu odpowiednie uprawnienia i ustawić silne hasło, żeby użytkownik nie miał domyślnego słabego zabezpieczenia. Co ciekawe, ta metoda działa już od czasów Windows NT i praktycznie się nie zmienia, więc można na niej polegać. Polecenie pozwala też na inne operacje, np. resetowanie hasła czy blokowanie konta, wystarczy odpowiednio zmodyfikować składnię. To narzędzie jest moim zdaniem podstawą pracy każdego technika administrującego komputerami z Windows.

Pytanie 17

Operacja warunkowa w większości języków programowania wysokiego poziomu zaczyna się słowem

A. for
B. if
C. do
D. while
Operacja warunkowa to coś, co w programowaniu spotyka się na każdym kroku. Słowo kluczowe „if” jest takim fundamentem, bez którego trudno wyobrazić sobie jakikolwiek prosty algorytm. Można powiedzieć, że to taki podstawowy budulec logiki w większości popularnych języków, jak Python, Java, C++, C#, JavaScript – wszędzie tam „if” rozpoczyna warunkowe rozgałęzienie. Praktycznie zawsze wygląda to mniej więcej tak: if (warunek) { // kod gdy warunek prawdziwy }. Dzięki temu można sterować przepływem programu i reagować na różne sytuacje, zależnie od zmiennych lub wyniku działania funkcji. Co ciekawe, samo „if” to skrót od angielskiego „jeśli”, więc nawet osoby, które nie znają za dobrze języka angielskiego, łatwo zapamiętują jego działanie. Moim zdaniem, warto zawsze na początku nauki programowania dobrze zrozumieć, jak działa instrukcja warunkowa, bo potem przy bardziej złożonych projektach nie raz ratuje nam skórę. Dla przykładu – gdy programujemy prostą aplikację do logowania, najpierw sprawdzamy if hasło jest prawidłowe, potem if użytkownik jest aktywny, itd. To jest naprawdę uniwersalne narzędzie, a przy okazji bardzo czytelne i intuicyjne. Warto jeszcze wiedzieć, że „if” to element tzw. struktury sterowania, której znajomość jest absolutną podstawą, według praktycznie wszystkich standardów nauczania i dokumentacji języków programistycznych.

Pytanie 18

Które polecenie w systemie Windows tworzy folder Dane?

A. rmdir Dane
B. ren Dane
C. set Dane
D. mkdir Dane
Polecenie 'mkdir Dane' jest dokładnie tym, czego potrzebujesz, gdy chcesz stworzyć nowy folder o nazwie 'Dane' w systemie Windows. Skrót 'mkdir' pochodzi od angielskiego 'make directory', co wprost oznacza utworzenie katalogu. Z mojego doświadczenia, w pracy z wierszem poleceń Windows (czyli cmd.exe), to jedno z najczęściej wykorzystywanych narzędzi do zarządzania strukturą katalogów — szczególnie gdy automatyzujemy zadania albo przygotowujemy środowisko pracy. Przydaje się chociażby wtedy, gdy musisz szybko stworzyć kilka podfolderów na dane projektowe, bez klikania myszką po Eksploratorze. Warto zapamiętać, że mkdir pozwala od razu utworzyć nawet całą ścieżkę katalogów, np. 'mkdir Dane\Archiwum\2024', a system sam zadba o stworzenie brakujących katalogów po drodze. Co ciekawe, polecenie to jest standardem nie tylko w Windows, ale i w systemach Linux czy macOS, więc jego znajomość jest przydatna niezależnie od platformy. Dobrą praktyką jest też korzystanie z parametrów, np. '/p', jeśli chcemy mieć pewność, że stworzymy całą strukturę katalogów na raz. No i jeszcze jedna rzeczywistość — bez odpowiednich uprawnień (np. na dysku systemowym), mkdir nie zadziała, więc warto pamiętać o prawach użytkownika. Moim zdaniem, to takie podstawowe narzędzie, które każdy informatyk powinien znać na pamięć, bo znacznie przyspiesza codzienną pracę.

Pytanie 19

Pierwszym krokiem podczas prac serwisowych wymagających modyfikowania rejestru w systemie Windows jest wykonanie

A. importu rejestru.
B. podłączenia rejestru sieciowego.
C. oczyszczania rejestru.
D. kopii rejestru.
Modyfikowanie rejestru w systemie Windows to jeden z tych tematów, które przez wielu są pomijane, a to błąd, bo potrafi narobić sporo zamieszania. Zawsze, zanim zaczniesz jakiekolwiek zmiany w rejestrze – nawet te wydające się banalne – najpierw wykonaj kopię rejestru. To praktyka, której trzymają się doświadczeni administratorzy oraz serwisanci sprzętu komputerowego. Chodzi o to, że rejestr przechowuje fundamentalne ustawienia systemu i aplikacji, i każda nieprawidłowa edycja może po prostu unieruchomić system albo wygenerować trudne do rozwiązania błędy. Moim zdaniem lepiej poświęcić te dwie minuty więcej na backup, niż później spędzić godziny na przywracaniu systemu. Kopię rejestru możesz zrobić przez eksport wybranego klucza lub całości z poziomu edytora regedit – jest to bardzo przydatne, bo w razie problemów możesz wrócić do poprzedniego stanu. Microsoft także w swoich oficjalnych dokumentacjach podkreśla ten krok jako obowiązkowy przed jakimikolwiek pracami serwisowymi. Warto pamiętać, że kopiowanie rejestru chroni nie tylko przed własnymi błędami, ale też przed skutkami nieprzewidzianych awarii, np. wyłączenia zasilania podczas edycji. Z mojego doświadczenia, każda poważniejsza awaria po zmianach w rejestrze u osób pomijających backup kończyła się reinstalacją systemu, a tego raczej nikt nie lubi. Podsumowując, kopiowanie rejestru to po prostu zdrowy rozsądek i minimum profesjonalizmu w informatyce.

Pytanie 20

Który system plików jest dedykowany systemowi Linux oraz nie jest używany w systemie Windows?

A. FAT16
B. FAT32
C. EXT4
D. NTFS
EXT4 to system plików stworzony specjalnie z myślą o Linuksie i na dziś chyba najczęściej wybierany podczas instalacji większości dystrybucji, przynajmniej z tych bardziej popularnych. EXT4, czyli Fourth Extended File System, jest uznawany za stabilny, bardzo wydajny i bezpieczny – w codziennym użytkowaniu trudno go czymś zaskoczyć. Z mojego doświadczenia wynika, że jeśli ktoś instaluje Ubuntu, Debiana, czy nawet Arch Linux, to niemal na pewno decyduje się właśnie na EXT4, bo to taka złota reguła w świecie Linuksa. Co ciekawe, EXT4 nie jest obsługiwany natywnie przez Windows – nawet najnowsze wersje tego systemu nie potrafią w prosty sposób odczytać czy zapisać danych na partycji EXT4 bez specjalnych narzędzi zewnętrznych, które na dodatek bywają zawodne. Praktyka pokazuje, że do backupów, serwerów czy laptopów z Linuksem EXT4 po prostu się sprawdza – nie ma problemów z fragmentacją, obsługuje bardzo duże pliki, a dziennikowanie gwarantuje bezpieczeństwo danych. Tak naprawdę, EXT4 to niejako branżowy standard pod Linuksa. Dobrą praktyką jest korzystanie z tego systemu plików przy instalacji Linuksa, jeśli nie planujesz współdzielić partycji z Windowsem. Trochę szkoda, że Microsoft nie zaimplementował obsługi EXT4 na stałe, ale może to się zmieni w przyszłości – na razie EXT4 jest domeną Linuksa i to chyba się nie zmieni szybko.

Pytanie 21

Podczas uruchamiania komputera procedura POST testuje poprawność działania

A. tylko pamięci RAM i kart pamięci.
B. tylko karty graficznej oraz karty sieciowej.
C. dysków, napędów optycznych i kart pamięci.
D. procesora, pamięci RAM, karty graficznej oraz dysków twardych.
Procedura POST (Power-On Self Test) to taki pierwszy etap uruchamiania komputera, który sprawdza, czy najważniejsze podzespoły działają poprawnie. Moim zdaniem to jeden z tych procesów, o których często się zapomina, a bez niego komputer nawet nie ruszy dalej! POST weryfikuje przede wszystkim, czy procesor, pamięć RAM, karta graficzna oraz dyski twarde są sprawne i prawidłowo podłączone. Bez tych elementów nie da się zainicjować systemu operacyjnego ani nawet wyświetlić komunikatów o błędach. W praktyce, jeśli np. pamięć RAM jest uszkodzona, komputer wyda sygnał dźwiękowy lub pokaże odpowiedni komunikat na ekranie (jeśli karta graficzna działa). Z mojego doświadczenia, najczęściej spotykanymi problemami podczas POST są właśnie źle włożone pamięci RAM lub brak sygnału z karty graficznej. Branżowe dobre praktyki podkreślają, żeby zawsze zacząć diagnostykę komputera od tych podstawowych komponentów, zanim przejdzie się do drobniejszych usterek. Procedura POST jest częścią standardu BIOS/UEFI i to dzięki niej użytkownik od razu wie, że coś jest nie tak, zanim system operacyjny w ogóle zacznie się ładować. Dodatkowo, POST nie sprawdza urządzeń peryferyjnych typu drukarki czy skanery, tylko skupia się na tym, bez czego komputer nie ruszy. To naprawdę ułatwia życie każdemu, kto zajmuje się serwisem komputerowym – po dźwiękach beep można od razu zorientować się, gdzie jest błąd. Taką diagnostykę można znaleźć w każdym nowoczesnym pececie i to jest absolutny standard branżowy.

Pytanie 22

W celu wyszukania błędów w programie wykorzystuje się

A. kompilator.
B. debuger.
C. konsolidator.
D. linker.
Debuger to narzędzie absolutnie podstawowe dla każdego programisty, który chce świadomie szukać i naprawiać błędy w swoim kodzie. Z doświadczenia mogę powiedzieć, że praca bez debugera przypomina trochę szukanie igły w stogu siana – owszem, można próbować zgadywać, co się popsuło, ale skuteczność takiego podejścia jest znikoma. Debuger pozwala uruchamiać program krok po kroku, zatrzymywać wykonanie w wybranych miejscach (tzw. breakpointach), sprawdzać wartości zmiennych na każdym etapie działania oraz obserwować zmiany w pamięci operacyjnej. Współczesne IDE, jak Visual Studio, Eclipse czy nawet darmowe Code::Blocks, mają wbudowane debugery, które bardzo ułatwiają analizę działania programów. Dobrą praktyką, stosowaną w branży, jest nie tylko używanie debugera do naprawiania błędów, ale także do zrozumienia logiki działania własnego kodu – czasami wychodzą wtedy bardzo ciekawe rzeczy na jaw. Co ciekawe, debugowanie to nie tylko szukanie tzw. crashy czy błędów logicznych, ale również optymalizacja działania programu, np. wykrywanie niepotrzebnych obliczeń czy nieefektywnych algorytmów. W sumie debuger to taki „mikroskop” programisty – pozwala zobaczyć to, co normalnie ukryte. W mojej opinii, żaden poważny projekt nie powstaje bez porządnego debugowania i właśnie dlatego znajomość obsługi debugera powinna być żelaznym punktem w arsenale każdego przyszłego developera.

Pytanie 23

W programowaniu obiektowym zmienne widoczne w ramach klasy oraz poza nią nazywane są

A. publicznymi.
B. pewnymi.
C. chronionymi.
D. zastrzeżonymi.
Zmienne publiczne, czyli takie, które są widoczne zarówno w ramach danej klasy, jak i poza nią, są podstawową koncepcją w programowaniu obiektowym. To głównie dzięki nim obiekty mogą komunikować się ze światem zewnętrznym – na przykład inne klasy mogą bezpośrednio odczytywać i modyfikować ich wartości. W praktyce często spotyka się publiczne pola w prostych strukturach danych, modelach DTO (Data Transfer Object) czy podczas szybkiego prototypowania. Jednocześnie warto zauważyć, że z punktu widzenia dobrych praktyk branżowych, dostęp publiczny powinien być wykorzystywany z umiarem. Zazwyczaj zaleca się stosowanie enkapsulacji oraz ukrywanie szczegółów implementacyjnych poprzez modyfikatory protected czy private, a udostępnianie danych na zewnątrz realizować przez metody dostępowe (gettery i settery). Niemniej jednak, czasem publiczne zmienne są wręcz niezbędne, na przykład w konstrukcjach typu struct w językach C++ czy C#. Sam fakt, że zmienna jest publiczna oznacza, że nie ma żadnego ograniczenia co do jej widoczności – każda klasa lub funkcja w projekcie może się do niej odwołać. Moim zdaniem, warto dobrze rozumieć ten mechanizm, bo można wtedy świadomie projektować interfejsy klas i decydować, kiedy rzeczywiście opłaca się odsłaniać dane dla innych części systemu. Podsumowując: jeśli coś ma być dostępne wszędzie, powinno być publiczne – i tyle. Resztę chowamy według potrzeb.

Pytanie 24

Pojęcie „Architektura Harvardska” odnosi się do

A. komunikacji komputera z ploterem.
B. topologii sieci komputerowej.
C. pracy procesora.
D. programów współpracujących z maszynami CNC.
Architektura Harvardska to jedno z podstawowych pojęć w obszarze projektowania procesorów oraz mikroprocesorów. Generalnie chodzi w niej o to, że pamięć programu i pamięć danych są fizycznie rozdzielone — procesor ma osobne magistrale do komunikacji z każdą z nich. Z mojego doświadczenia wynika, że takie rozwiązanie daje dużą przewagę w szybkości przetwarzania. Dla przykładu, jeśli mamy mikrokontroler oparty na architekturze Harvardskiej, może on w jednym cyklu pobrać dane z jednej pamięci i instrukcję z drugiej, praktycznie równocześnie. Brzmi jak magia, ale to po prostu przemyślana inżynieria. Jest to szczególnie popularne w systemach embedded, np. w rodzinie AVR czy PIC, które często używa się chociażby w automatyce przemysłowej lub elektronice użytkowej. W odróżnieniu od architektury von Neumanna, gdzie jest jedna magistrala i pamięć, co może prowadzić do tzw. wąskiego gardła, tak zwany bottleneck. Moim zdaniem to rozdzielenie jest świetnym przykładem praktycznego wykorzystania teorii w realnych urządzeniach. Warto też wiedzieć, że w nowoczesnych procesorach hybrydowe podejście bywa stosowane, ale sama zasada architektury Harvardskiej to właśnie praca procesora, a nie topologia sieci czy komunikacja z ploterem. W praktyce często spotykam się z pomyłkami w tym zakresie, dlatego uważam, że warto dobrze rozróżniać te pojęcia.

Pytanie 25

W jakim celu stosuje się podział użytkowników na grupy w systemie operacyjnym?

A. Umożliwia zwiększenie liczby użytkowników w systemie.
B. Umożliwia prawidłowe działanie systemu.
C. Ułatwia zarządzanie prawami użytkowników w systemie.
D. Ułatwia kontrolę i przydział pamięci operacyjnej podczas pracy systemu.
Podział użytkowników na grupy w systemie operacyjnym to, szczerze mówiąc, jedno z najważniejszych narzędzi, jakie administrator ma do dyspozycji przy zarządzaniu systemem. Wyobraź sobie, że w dużej organizacji masz kilkudziesięciu albo nawet kilkuset użytkowników – każdy z innymi potrzebami i dostępem do różnych zasobów. Przypisywanie indywidualnych uprawnień każdemu z osobna byłoby koszmarem. Dzięki grupom można ustawić prawa dostępu do folderów, plików czy usług dla całych zespołów naraz – np. dział księgowości ma dostęp do faktur, a programiści do repozytoriów kodu. Z mojego doświadczenia, to nie tylko oszczędność czasu, ale też ogromne ułatwienie w utrzymaniu porządku i bezpieczeństwa. Branżowe standardy, jak chociażby model kontroli dostępu DAC czy RBAC, opierają się właśnie na takich mechanizmach grupowych – to podstawa w systemach Linux czy Windows Server. Przypisanie użytkownika do odpowiedniej grupy sprawia, że zyskuje on zestaw uprawnień przypisanych tej grupie, bez konieczności ręcznego ustawiania wszystkiego. Takie podejście ułatwia audyt, zmniejsza ryzyko błędów i zdecydowanie podnosi poziom bezpieczeństwa całego środowiska IT. Uważam, że każdy kto zarządza systemami operacyjnymi, powinien zrozumieć, jak ogromne możliwości daje właściwe zarządzanie grupami.

Pytanie 26

Jaką funkcję pełni przedstawiona na rysunku procedura BIOS?

Ilustracja do pytania
A. Przyśpiesza operacje zapisu danych na dysk SSD podczas zamykania systemu operacyjnego.
B. Przyśpiesza operacje odczytu danych z dysku SSD podczas uruchomienia systemu operacyjnego.
C. Umożliwia wykonanie testu poprawności działania dysku twardego podczas uruchomienia systemu operacyjnego.
D. Umożliwia odczytanie parametrów dysku twardego podczas uruchomienia systemu operacyjnego.
Wybrana odpowiedź jest prawidłowa, bo dokładnie takie zadanie realizuje procedura SMART Self-Test w BIOS-ie. Ten mechanizm – moim zdaniem jeden z najbardziej niedocenianych przez zwykłych użytkowników – pozwala kontrolować stan techniczny dysku twardego już podczas startu komputera. BIOS uruchamia tzw. autotest SMART, czyli Self-Monitoring, Analysis and Reporting Technology. Chodzi tu o wczesne wykrycie problemów z dyskiem, zanim jeszcze system operacyjny wystartuje na dobre. Praktyczny sens tego rozwiązania? Jeśli dysk twardy zaczyna mieć jakieś błędy mechaniczne lub logiczne, BIOS wykryje to podczas procesu POST (Power-On Self-Test) i wyświetli odpowiedni komunikat. Z mojego doświadczenia wynika, że takie ostrzeżenia często pozwalają na uratowanie danych, zanim dysk odmówi całkowicie posłuszeństwa. To jest zgodne z najlepszymi praktykami branżowymi – regularny monitoring SMART i szybka reakcja na błędy to podstawa zarządzania sprzętem w każdym poważnym środowisku IT. Warto wiedzieć, że wyniki testu SMART są analizowane na podstawie kilkudziesięciu parametrów, takich jak liczba relokowanych sektorów, czas rozruchu, czy liczba błędów odczytu. Współczesne standardy zalecają, żeby nie ignorować alertów SMART i natychmiast wykonać kopię zapasową, jeśli pojawi się jakiekolwiek ostrzeżenie. To dobra inwestycja w bezpieczeństwo danych – sam zawsze radzę, żeby mieć to ustawienie włączone, nawet jeśli trochę wydłuża start systemu.

Pytanie 27

Zapisana w ramce funkcja zawiera

Funkcja oblicz(n)
    Jeżeli n=0
        oblicz=1
    W przeciwnym wypadku oblicz=(n-1)*oblicz(n-1)
A. iterację.
B. inkrementację.
C. rekurencję.
D. permutację.
Funkcja pokazana w ramce to klasyczny przykład rekurencji, bo sama siebie wywołuje wewnątrz własnej definicji. Właśnie to jest istotą rekurencji – funkcja wykonuje część pracy, a potem przekazuje dalsze wykonywanie sobie samej, tylko z innym (najczęściej mniejszym) argumentem. W praktyce takie podejście jest szeroko wykorzystywane przy rozwiązywaniu problemów, które mają powtarzającą się strukturę, np. obliczanie silni, przeszukiwanie struktur drzewiastych czy rozwiązywanie problemów typu „dziel i zwyciężaj”. Co ciekawe, rekurencja jest bardzo elegancka i pozwala pisać bardzo zwięzły kod, ale trzeba uważać na warunek stopu, żeby funkcja się nie zapętliła (tutaj to jest przypadek n=0). Sam spotkałem się już z sytuacjami, gdzie bez rekurencji rozwiązanie byłoby dużo trudniejsze do napisania, np. przy sortowaniu szybkim (quicksort) czy wyszukiwaniu binarnym w drzewie BST. Według standardów branżowych (np. Clean Code czy wzorce projektowe), rekurencji warto używać tam, gdzie naturalnie odwzorowuje strukturę problemu. Z mojego doświadczenia wynika, że początkujący czasem boją się rekurencji, ale kiedy już ją „załapią”, bardzo często wracają do niej w bardziej złożonych zadaniach. Ta funkcja to bardzo fajny wzorzec do nauki!

Pytanie 28

Które polecenia są charakterystyczne dla instrukcji iteracyjnych?

A. if, switch
B. for, while
C. begin, end
D. var, set
Instrukcje iteracyjne, takie jak for i while, to absolutny fundament programowania praktycznie w każdym języku. Pozwalają nam na wielokrotne powtarzanie fragmentu kodu aż do spełnienia określonego warunku. Moim zdaniem to jest jedna z tych rzeczy, które naprawdę trzeba opanować, bo bez tego trudno budować jakiekolwiek sensowne algorytmy. Najczęściej używa się ich do przetwarzania tablic, list czy sprawdzania warunków aż do momentu osiągnięcia oczekiwanego rezultatu. Na przykład, w pętli for bardzo wygodnie można przejść przez każdy element tablicy w języku C++ czy Python, a while pozwala na bardziej elastyczne powtarzanie, gdy nie znamy z góry ilości powtórzeń – np. dopóki użytkownik nie poda właściwego hasła. W praktyce warto pamiętać, żeby pętle dobrze kontrolować, bo bardzo łatwo stworzyć tzw. pętlę nieskończoną, która zatrzyma cały program. W standardach branżowych, jak np. w Pythonie czy Javie, składnia pętli for i while jest bardzo czytelna i zachęca do pisania zrozumiałego kodu. No i jeszcze – często w projektach spotykam się z zaleceniem, żeby nie nadużywać zagnieżdżonych pętli, bo to może prowadzić do spadku wydajności. Krótko mówiąc: for i while to podstawa, która daje ogromną kontrolę nad logiką programu.

Pytanie 29

Z przedstawionego zrzutu wynika, że na dyskach zastosowano partycjonowanie

DISKPART> list disk
Disk ### Status Size Free Dyn Gpt
-------- ------------ ------- ------- --- ---
Disk 0 Online 698 GB 0 B *

DISKPART> select disk 0
Disk 0 is now the selected disk.
DISKPART> list partition
Partition ### Type Size Offset
------------- ---------- ------- -------
Partition 1 Recovery 450 MB 1024 KB
Partition 2 System 100 MB 451 MB
Partition 3 Reserved 16 MB 551 MB
Partition 4 Primary 451 GB 567 MB
Partition 5 Unknown 242 GB 452 GB
Partition 6 Unknown 3958 MB 694 GB

DISKPART>
A. MBR
B. NTFS
C. FAT
D. GPT
W tym przypadku prawidłową odpowiedzią jest GPT. Wskazuje na to obecność gwiazdki w kolumnie 'Gpt' przy liście dysków w narzędziu DISKPART. GPT, czyli GUID Partition Table, to nowoczesny standard partycjonowania dysków, szeroko stosowany w komputerach z UEFI. Pozwala na tworzenie wielu partycji (dużo więcej niż MBR), a także na obsługę dużych dysków o pojemności powyżej 2 TB. Moim zdaniem warto kojarzyć, że GPT jest wymogiem przy instalacji nowych wersji Windowsa na komputerach z UEFI – to już właściwie standard, zwłaszcza w sprzęcie wyprodukowanym po 2012 roku. Co ciekawe, w GPT pojawiają się typowe partycje jak EFI, Recovery czy Reserved, tak jak pokazano w zrzucie – tego nie byłoby w klasycznym MBR. GPT zapewnia też odporność na uszkodzenia (backup tablicy partycji) oraz wykorzystuje unikalne identyfikatory partycji GUID, co bardzo ułatwia zarządzanie dyskami w środowiskach serwerowych czy wirtualizacyjnych. Z mojego doświadczenia, coraz rzadziej spotyka się sprzęt z klasycznym MBR – szczególnie w nowych konfiguracjach. Branża idzie zdecydowanie w stronę GPT ze względu na skalowalność i wyższe bezpieczeństwo danych. Dla administratorów systemów albo osób składających własne komputery to obecnie podstawa wiedzy – i praktycznie zawsze zalecane rozwiązanie zgodnie z dobrymi praktykami.

Pytanie 30

Aby zainstalować brakujące oprogramowanie w systemie z rodziny Linux należy wykorzystać polecenie

A. apt-get install
B. get install
C. apt cache
D. install
Polecenie „apt-get install” to w zasadzie taki standard, jeśli chodzi o instalację oprogramowania w systemach Linux z rodziny Debian, Ubuntu i pochodnych. Używanie tego narzędzia jest intuicyjne, choć czasem niektórych może przerazić wiersz poleceń. Moim zdaniem, jak już ktoś choć raz spróbuje zainstalować pakiet przez „apt-get install”, to szybko zobaczy, jak bardzo to przyspiesza codzienną pracę. W praktyce wygląda to tak: wpisujesz „sudo apt-get install nazwa_pakietu” i system automatycznie pobiera oraz instaluje wybrany program wraz z wszystkimi zależnościami – nie trzeba ręcznie szukać ani ściągać żadnych plików. To ogromna wygoda i bezpieczeństwo, bo wszystko pobiera się z oficjalnych repozytoriów, no i nie narażasz się na ściągnięcie jakiegoś trefnego pliku z internetu. Z mojego doświadczenia wynika, że praktycznie każdy administrator czy nawet zwykły użytkownik Linuksa powinien znać te podstawy. Warto też pamiętać, że od kilku lat pojawiło się polecenie „apt install”, które jest uproszczoną wersją, ale „apt-get” nadal często pojawia się w dokumentacjach, skryptach i instrukcjach branżowych. Instalacja przez „apt-get install” jest po prostu najpewniejszym i najczęściej stosowanym rozwiązaniem w środowiskach produkcyjnych – lepiej to opanować na pamięć, bo prędzej czy później się przyda. Mi nieraz uratowało skórę, kiedy musiałem na szybko dorzucić brakującą bibliotekę czy narzędzie. To podstawa pracy z tymi systemami.

Pytanie 31

Aby zapisać wynik dzielenia dowolnych dwóch liczb różnych od zera, należy użyć zmiennej typu

A. integer
B. float
C. char
D. boolean
W przypadku, gdy chcemy zapisać wynik dzielenia dwóch liczb, które nie muszą być całkowite, właściwym wyborem zdecydowanie jest użycie typu float. Typ float pozwala na przechowywanie wartości rzeczywistych, również z częściami ułamkowymi, co jest kluczowe przy operacjach dzielenia. W praktyce programistycznej bardzo często pojawia się potrzeba wykonywania obliczeń, w których wynik nie jest liczbą całkowitą – choćby zwykłe dzielenie 5 przez 2 daje 2.5. Gdybyśmy zapisali taki wynik w zmiennej typu integer, stracilibyśmy część ułamkową (w niektórych językach nawet zostanie zaokrąglone w dół), co jest niezgodne z zasadami precyzyjnych obliczeń. Moim zdaniem, szczególnie w aplikacjach finansowych czy naukowych, gdzie precyzja jest bardzo istotna, korzystanie z float lub nawet double jest uznawane za dobrą praktykę. Trzeba tylko pamiętać, że float ma pewne ograniczenia, jeśli chodzi o dokładność – dla bardzo dokładnych obliczeń lepiej stosować typy double lub specjalne biblioteki. Standardy programistyczne, np. w C czy Javie, jasno określają, że typ float jest przeznaczony właśnie do przechowywania wartości zmiennoprzecinkowych. Tak więc, wybierając float, masz pewność, że Twoje wyniki dzielenia nie zostaną zniekształcone przez utratę części ułamkowej. To trochę jak z matematyki w szkole – nie zawsze wszystko da się ładnie podzielić bez reszty i komputer powinien to odzwierciedlać.

Pytanie 32

Ile operacji inkrementacji wykonano w przedstawionej liście kroków?

i=0;
Dopóki i>3 wykonaj      i=i+1;
A. Wykonano zero operacji.
B. Wykonano trzy operacje.
C. Wykonano dwie operacje.
D. Wykonano jedną operację.
Warunek dopóki i>3 sprawia, że pętla nie jest wykonywana ani razu, bo już na początku zmienna i ma wartość 0, która nie spełnia tego warunku. Takie zachowanie jest bardzo typowe w wielu językach programowania, szczególnie gdy stosujemy pętle z warunkiem wejściowym, jak while w C, C++ czy Pythonie. W tym przypadku inkrementacja i=i+1 nigdy nie zostaje uruchomiona, więc liczba operacji inkrementacji wynosi dokładnie zero. Moim zdaniem to ważna pułapka logiczna – czasem wydaje się, że pętla coś wykona, bo jest instrukcja inkrementacji i cały blok, a tymczasem wszystko rozgrywa się na poziomie warunku początkowego. W praktyce profesjonalnej programista powinien zawsze na chłodno przeanalizować, czy warunek pozwala wejść do pętli, zanim zacznie rozważać ile operacji jest wykonanych. W dokumentacjach i materiałach edukacyjnych często się to podkreśla, bo takich błędów łatwo uniknąć, jeśli dobrze rozumie się logikę pętli. Przykład bardzo przypomina popularny case, gdy błędnie ustawiony warunek pętli może całkiem zablokować jej wykonywanie – zdarza się to nawet doświadczonym osobom. Warto się upewnić, czy warunek wejścia do pętli jest spełniony dla wartości początkowych zmiennych, bo to jeden z filarów poprawnego programowania strukturalnego.

Pytanie 33

Którego nośnika pamięci należy użyć w komputerze, aby zapewnić najszybsze ładowanie się systemu operacyjnego podczas jego uruchamiania?

A. Dysku HDD.
B. Pendrive’a podłączonego do USB 3.0.
C. Dysku SSD.
D. Płyty BD w napędzie optycznym.
Dysk SSD, czyli Solid State Drive, to obecnie najczęściej polecany nośnik pamięci do instalacji systemu operacyjnego, jeśli zależy nam na naprawdę szybkim uruchamianiu komputera. Wynika to głównie z tego, że SSD korzysta z pamięci flash, przez co dostęp do danych jest praktycznie natychmiastowy – opóźnienia są minimalne nawet w porównaniu z najszybszymi dyskami HDD. Moim zdaniem, nie ma już sensu inwestować w tradycyjne dyski talerzowe jako główny dysk systemowy, zwłaszcza że ceny SSD mocno spadły przez ostatnie lata. Sam kiedyś miałem system na HDD i różnica po przesiadce na SSD była ogromna – bootowanie systemu zajmuje dosłownie kilkanaście sekund zamiast minuty. Producenci komputerów też coraz częściej montują SSD jako standard. Warto też wiedzieć, że SSD są mniej podatne na uszkodzenia mechaniczne, bo nie mają ruchomych części, a to istotne w laptopach czy komputerach przenośnych. Najnowocześniejsze SSD na złączu NVMe (PCIe) osiągają prędkości rzędu kilku tysięcy MB/s, co w praktyce daje bardzo szybką pracę systemu i aplikacji – żaden HDD czy pendrive nie jest w stanie tego przebić. Według standardów branżowych, instalacja systemu na SSD to już właściwie reguła w profesjonalnych zastosowaniach i domowych PC.

Pytanie 34

Który system plików pozwala na szyfrowanie danych w systemie Windows?

A. ReiserFS
B. EXT4
C. FAT32
D. NTFS
NTFS to obecnie najpopularniejszy system plików w środowisku Windows i, co tu dużo gadać, jego największą przewagą nad starszymi rozwiązaniami, jak FAT32, jest właśnie obsługa funkcji bezpieczeństwa. Dopiero na NTFS można korzystać z tak zwanych uprawnień do plików i katalogów, kompresji czy – co najważniejsze w tym pytaniu – szyfrowania na poziomie systemu plików. Funkcja EFS (Encrypting File System) pozwala zaszyfrować dane bezpośrednio z poziomu Eksploratora Windows, więc nawet laik może zabezpieczyć swoje pliki przed nieautoryzowanym dostępem. Lubię to rozwiązanie, bo nie wymaga dodatkowych narzędzi, no i po zalogowaniu się odpowiednim kontem użytkownika pliki są po prostu dostępne. Warto pamiętać, że szyfrowanie EFS jest zgodne z polityką bezpieczeństwa wielu firm – często wręcz wymagane przez wewnętrzne standardy IT, żeby ograniczyć ryzyko wycieku danych przy kradzieży laptopa czy dysku. Moim zdaniem, jeśli ktoś pracuje na służbowym sprzęcie albo trzyma jakieś poufne rzeczy na Windowsie, to naprawdę nie ma innej sensownej opcji niż NTFS. Zresztą nawet w domowych zastosowaniach, jeśli komuś zależy na prywatności, to przejście na NTFS to podstawa. Dobrze też wiedzieć, że np. podczas przenoszenia plików na inne systemy plików (np. FAT32 na pendrive’ie) cały ten mechanizm szyfrowania znika. To czasami potrafi zaskoczyć.

Pytanie 35

Wynikiem działania funkcji F(n) będzie

funkcja F(n)
jeżeli n>1
F(n)=3*F(n-1)
w przeciwnym wypadku
F(n)=3
A. 3*n
B. n^3
C. 3^n
D. 3*(n-1)
Funkcja F(n) jest przykładem rekurencji liniowej, gdzie za każdym razem dla n>1 wartość funkcji jest mnożona przez 3 w stosunku do poprzedniego wyniku. W skrócie: F(n) = 3 * F(n-1), a dla n=1 ustalamy F(1)=3. Jeśli rozwiniesz to rekurencyjnie, otrzymasz ciąg: F(2)=3*3, F(3)=3*3*3, itd., co prowadzi do wzoru ogólnego F(n)=3^n. To jest bardzo charakterystyczne dla tzw. ciągów geometrycznych. Moim zdaniem taki typ zadań świetnie pokazuje, jak działa propagacja wartości w rekurencji i jest często spotykany przy analizie algorytmów, szczególnie jeśli chodzi o złożoność obliczeniową. W praktyce informatycznej, takie wzory pojawiają się np. w algorytmach dziel i zwyciężaj, gdzie każda warstwa rekurencji mnoży się przez stałą. Warto pamiętać, że znajomość wyprowadzenia wzoru rekurencyjnego do postaci jawnej (czyli bezpośredniej) bardzo przyspiesza analizę nawet bardziej złożonych funkcji. Często podczas programowania można spotkać się z zadaniami, gdzie trzeba rozpoznać, jak szybko rośnie funkcja, a tu wzrost wykładniczy (czyli właśnie potęgowanie) jest jednym z najszybszych. Co ciekawe, takie proste rekurencje mają też znaczenie choćby w modelowaniu wzrostu populacji czy inwestycji finansowych. Generalnie zaś, wykładniczy wzrost to nie przelewki – potrafi bardzo szybko doprowadzić do dużych wartości, dlatego w praktycznych aplikacjach programistycznych trzeba uważać na przepełnienia zmiennych i ograniczenia sprzętowe.

Pytanie 36

W opisanym programie zostaną wykonane 4

for (i=0;i<=3;i++)
suma=suma+i;
A. iteracje.
B. dekrementacje.
C. rekurencje.
D. rekursje.
W tym przypadku mamy klasyczną pętlę for, czyli typową konstrukcję służącą do wykonywania iteracji w programowaniu. Program zaczyna od wartości i=0 i zwiększa ją do i=3, wykonując blok kodu suma=suma+i za każdym razem. To powoduje, że cała ta konstrukcja wykona się dokładnie 4 razy, bo pętla działa, dopóki i<=3, czyli dla wartości 0, 1, 2 oraz 3. W praktyce właśnie takie iteracje pozwalają nam zautomatyzować powtarzanie operacji bez konieczności ręcznego kopiowania kodu. Moim zdaniem to jedna z najbardziej fundamentalnych rzeczy, jaką warto opanować na początku nauki programowania. Bez iteracji trudno sobie wyobrazić np. sumowanie elementów tablicy, przetwarzanie zbioru danych czy nawet proste generowanie raportów. W codziennej pracy z kodem iteracje spotyka się praktycznie wszędzie – od prostych algorytmów po bardziej zaawansowane pętle obsługujące np. zdarzenia w aplikacjach. Warto też pamiętać, że dobre praktyki nakazują pisanie takich pętli w sposób czytelny i optymalny, zarówno pod względem wydajności, jak i zrozumiałości dla innych członków zespołu. Pętle for są standardem w wielu językach, m.in. C, C++, Java, Python (choć tam składnia wygląda trochę inaczej).

Pytanie 37

W dokumentacji Medycznego Systemu Informatycznego zapisano, że „przed użyciem programów instalacyjnych należy się upewnić, że niektóre porty w środowisku są dostępne do użycia z instalowanym oprogramowaniem pośrednim.” W celu sprawdzenia dostępności portu należy użyć programu narzędziowego

A. netstat
B. ipconfig
C. tracert
D. ping
Netstat to jedno z tych narzędzi, które naprawdę warto znać, jeśli chodzi o sprawdzanie dostępności portów w systemie operacyjnym. Moim zdaniem, bez niego ciężko byłoby szybko ogarnąć, co się dzieje na poziomie komunikacji sieciowej. Netstat pozwala zobaczyć, które porty są obecnie otwarte, jakie programy ich używają oraz na jakie adresy nasłuchują. W praktyce wygląda to tak, że jeśli masz zainstalować jakieś oprogramowanie pośrednie (np. serwer bazodanowy albo aplikację middleware), to najpierw sprawdzasz, czy wymagany port nie jest już zajęty przez inny proces. Wpisujesz „netstat -a” albo „netstat -an” w konsoli i widzisz pełną listę aktywnych portów, zarówno TCP, jak i UDP. To bardzo pomaga uniknąć konfliktów, które później mogą prowadzić do dziwnych błędów czy braku komunikacji między usługami. Branżowe dobre praktyki wyraźnie mówią, że należy się upewnić, iż porty wymagane do działania nowego oprogramowania są wolne lub odpowiednio przekonfigurowane. Z mojego doświadczenia wynika, że netstat jest też niezastąpiony podczas analizy problemów z nieautoryzowanymi połączeniami albo diagnostyki wydajności. W wielu firmach to podstawa przy wdrażaniu i utrzymaniu systemów medycznych czy innych środowisk krytycznych. Warto też wiedzieć, że netstat jest dostępny niezależnie od wersji systemu Windows, a podobne narzędzia działają na Linuxie, więc ta wiedza przydaje się praktycznie wszędzie.

Pytanie 38

Rejestr rozkazów procesora przechowuje

A. adres aktualnie wykonywanego rozkazu.
B. kod aktualnie wykonywanego rozkazu.
C. numer rozkazu, który będzie wykonywany jako następny.
D. adres rozkazu, który będzie wykonywany jako następny.
Rejestr rozkazów procesora, znany też jako rejestr IR (Instruction Register), odgrywa kluczową rolę w cyklu wykonywania instrukcji. To właśnie tutaj ładowany jest kod rozkazu, który procesor ma aktualnie wykonać – nie mylić z adresem tej instrukcji! W praktyce, kiedy procesor pobiera instrukcję z pamięci operacyjnej (RAM), jej kod jest wczytywany właśnie do rejestru rozkazów. Dzięki temu układ dekodera instrukcji może dokładnie zinterpretować, co należy zrobić: czy wykonać operację arytmetyczną, przesłać dane, albo przeskoczyć do innego miejsca w programie. Moim zdaniem, rozumienie działania tego rejestru bardzo pomaga później przy analizie działania programów na poziomie asemblera czy podczas debugowania na sprzęcie niskiego poziomu. Standardy architektur takich jak x86 czy ARM jasno opisują ten mechanizm – przykładowo, w dokumentacji Intela dla procesorów x86 rejestr IR jest kluczowym elementem tzw. cyklu fetch-decode-execute. Warto zauważyć, że poprawna interpretacja zawartości rejestru rozkazów to podstawa dla każdego projektanta systemów embedded czy kogokolwiek, kto zamierza pisać programy blisko sprzętu. Nawet w nowoczesnych procesorach superskalarnych, choć budowa jest bardziej zaawansowana, idea przechowywania kodu aktualnie wykonywanej instrukcji pozostaje niezmienna. Dobrą praktyką jest też zawsze odróżnianie tego rejestru od licznika rozkazów (PC), który trzyma adres, a nie sam kod.

Pytanie 39

Jak nazywa się w programowaniu obiektowym instancję klasy?

A. Własność.
B. Dziedziczenie.
C. Metoda.
D. Obiekt.
Instancja klasy w programowaniu obiektowym to właśnie obiekt. To jest taki trochę fundament całego tego podejścia – bez obiektów nie byłoby sensu mówić o programowaniu obiektowym. Kiedy tworzymy klasę, to jest ona tylko szablonem lub pewnego rodzaju przepisem na to, jak mają wyglądać nasze dane i jak mają się zachowywać. Natomiast obiekt to konkretna, działająca „realizacja” tego przepisu – coś, co faktycznie istnieje podczas działania programu. Wyobraź sobie klasę jako projekt samochodu, a obiekty jako rzeczywiste egzemplarze tego samochodu stojące na parkingu. Każdy obiekt ma swoje własne dane (czyli stan, na przykład kolor, przebieg, model) i swoje operacje (czyli metody, na przykład przyspiesz, zahamuj). Takie podejście jest powszechnie stosowane we wszystkich popularnych językach obiektowych, jak Java, C++, Python czy C#. Z mojego doświadczenia wynika, że w realnych projektach bardzo rzadko spotyka się kod, który operuje wyłącznie na klasach – właściwie wszystko kręci się wokół obiektów. Dobre praktyki sugerują nie tylko tworzenie obiektów, ale i dbanie o ich odpowiednią enkapsulację, czyli ukrywanie szczegółów implementacyjnych, co pozwala na bezpieczne i elastyczne rozwijanie kodu. No i jeszcze ciekawostka: w wielu frameworkach spotkasz się z tzw. wzorcem fabryki, który właśnie pomaga zarządzać tworzeniem obiektów na podstawie klas. To mocno ułatwia życie, szczególnie przy dużych projektach. Moim zdaniem zrozumienie tej różnicy między klasą a obiektem to absolutna podstawa, jeśli ktoś myśli o karierze programisty.

Pytanie 40

W celu przerwania działania funkcji i powrotu do miejsca jej wywołania należy użyć instrukcji

A. continue
B. break
C. return
D. pause
Instrukcja return jest podstawowym narzędziem, które pozwala zakończyć działanie funkcji w dowolnym momencie jej wykonywania i od razu powrócić do miejsca, z którego funkcja została wywołana. To właśnie dzięki return można przekazać wynik działania funkcji lub nawet całkowicie przerwać jej dalsze instrukcje, jeśli np. wykryjemy jakiś błąd. W praktyce, kiedy piszesz funkcje np. w Pythonie, C++ czy Javie, return jest absolutnym standardem i trudno sobie wyobrazić kod bez niego – to taki „wyjście awaryjne” i narzędzie do komunikacji z resztą programu naraz. Fajny przykład: definiujesz funkcję, która ma policzyć pierwiastek z liczby; jeśli podana liczba jest ujemna, od razu robisz return z komunikatem o błędzie, a jak jest OK, return zwraca wynik obliczeń. Warto wiedzieć, że return kończy funkcję natychmiast, nawet jeśli dalej byłyby jakieś linijki kodu – one już się nie wykonają! Z mojego doświadczenia, dobrym zwyczajem jest używanie return również do jasnego zaznaczania miejsca wyjścia z funkcji, co poprawia czytelność kodu. Branżowe standardy, jak ten opisany w PEP8 dla Pythona albo w dokumentacji C++, jasno wskazują na return jako profesjonalny sposób kończenia funkcji i zwracania wartości. Pamiętaj, że w funkcjach bez zwracanej wartości (np. void w C++) możesz użyć return bez podawania argumentu – i to jest w pełni ok. Takie praktyczne wykorzystanie return znacząco ułatwia zarówno tworzenie, jak i późniejsze utrzymanie kodu.