Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 2 maja 2026 16:46
  • Data zakończenia: 2 maja 2026 17:11

Egzamin zdany!

Wynik: 33/40 punktów (82,5%)

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

Jaką liczbę warstw zawiera model TCP/IP?

A. 5
B. 2
C. 4
D. 7
Model TCP/IP, znany również jako Internet Protocol Suite, składa się z czterech warstw: warstwy aplikacji, warstwy transportowej, warstwy internetowej oraz warstwy dostępu do sieci. Warstwa aplikacji zajmuje się interakcjami z użytkownikami oraz aplikacjami, implementując protokoły takie jak HTTP, FTP, SMTP. Warstwa transportowa zapewnia komunikację między aplikacjami, w tym protokoły TCP i UDP, które różnią się pod względem niezawodności i kontroli przepływu. Warstwa internetowa, reprezentowana głównie przez protokół IP, odpowiada za adresowanie i trasowanie pakietów danych w sieci. Ostatnia warstwa, warstwa dostępu do sieci, obejmuje protokoły odpowiedzialne za fizyczne przesyłanie danych przez różne media, jak Ethernet czy Wi-Fi. Zrozumienie tych warstw jest kluczowe dla projektowania i implementacji rozwiązań sieciowych, a także dla analizy standardów, takich jak RFC 791 dla IPv4 oraz RFC 2460 dla IPv6, które definiują zasady działania protokołów w warstwie internetowej.

Pytanie 2

Jakie metody pozwalają na przesłanie danych z serwera do aplikacji front-end?

A. protokołu SSH
B. formatu JSON
C. metody POST
D. biblioteki jQuery
Wśród zaproponowanych odpowiedzi pojawiło się kilka nieporozumień technicznych, które niestety są dość często spotykane u początkujących programistów. Przede wszystkim, biblioteka jQuery sama w sobie nie jest metodą przesyłania danych – to narzędzie, które może ułatwić pobieranie i wysyłanie danych na front-endzie, ale bez określonego formatu danych (np. JSON) jej obecność niewiele znaczy w kontekście komunikacji z serwerem. Moim zdaniem stąd czasem bierze się mylne przekonanie, że jQuery "przesyła dane", ale to tylko narzędzie, a nie metoda czy format wymiany informacji. Jeśli chodzi o protokół SSH, to jest on zupełnie niepowiązany z komunikacją webową – SSH służy głównie do bezpiecznego zdalnego zarządzania serwerami i nie jest wykorzystywany do przesyłania danych pomiędzy serwerem a przeglądarką. SSH dobrze się sprawdza przy pracy zdalnej na terminalu, ale nie przy typowej wymianie danych w aplikacjach webowych. Z kolei metoda POST to jeden z typów żądań HTTP, który określa sposób przesłania danych do serwera, ale nie precyzuje formatu tych danych. Możemy wysłać w POST-cie tekst, plik, dane binarne, XML czy JSON – nie jest to więc format, tylko sposób komunikacji. Bardzo często początkujący mylą metodę HTTP z formatem danych, co prowadzi do niedokładnych odpowiedzi. Odpowiednie rozróżnienie między narzędziem, protokołem, metodą żądania a formatem danych jest kluczowe w codziennej pracy webdevelopera. W praktyce to właśnie wybór formatu – a nie tylko metody żądania czy użytej biblioteki – decyduje o tym, jak łatwo aplikacje front-end i back-end będą w stanie się "dogadać". JSON jest tu najlepszym przykładem takiego uniwersalnego sposobu wymiany danych.

Pytanie 3

Jaką wartość dziesiętną reprezentuje liczba binarna 1010?

A. 10
B. 12
C. 8
D. 14
Liczba binarna 1010 to wartość dziesiętna, która wynosi 10. Aby dokonać konwersji liczby binarnej na system dziesiętny, należy zrozumieć, że każda cyfra w systemie binarnym reprezentuje potęgę liczby 2, zaczynając od prawej strony, gdzie najniższa pozycja ma wartość 2^0. W przypadku 1010, mamy następujące pozycje: 1 * 2^3 (co daje 8), 0 * 2^2 (co daje 0), 1 * 2^1 (co daje 2) oraz 0 * 2^0 (co daje 0). Sumując te wartości: 8 + 0 + 2 + 0, otrzymujemy 10. W praktyce konwersja z systemu binarnego na dziesiętny jest niezwykle przydatna w programowaniu i elektronice, gdzie liczby binarne są powszechnie stosowane. Przykładowo, w obliczeniach komputerowych oraz w projektowaniu układów cyfrowych, znajomość tych konwersji jest kluczowa. Odnosi się to również do standardów, takich jak IEEE 754, które definiują reprezentację liczb zmiennoprzecinkowych w formatach binarnych.

Pytanie 4

Który z wymienionych dokumentów jest najczęściej stosowany w zarządzaniu pracą zespołu Scrum?

A. Lista zasobów ludzkich
B. Product backlog
C. Diagram Gantta
D. Specyfikacja techniczna
Diagram Gantta jest fajnym narzędziem do pokazywania harmonogramu, ale nie ma go w zarządzaniu backlogiem. Specyfikacja techniczna to co innego – tam są szczegóły implementacyjne, a nie priorytety funkcji. Lista zasobów ludzkich to temat o zarządzaniu personelem, a nie o zadaniach i priorytetach w Scrumie. Więc tu bardziej musisz uważać na to, co do czego pasuje.

Pytanie 5

Zaproponowany fragment kodu w Android Studio realizuje metodę nasłuchującą do obsługi wydarzenia:

przycisk = (Button) findViewById(R.id.yes_button);
przycisk.setOnClickListener(new View.OnClickListener() { ... });
A. wybór daty
B. naciśnięcia przycisku
C. zmiany w polu tekstowym
D. zmiany stanu kontrolki Switch
Metoda OnClickListener, to coś, co na pewno warto znać, gdy pracujesz z aplikacjami na Androida. Gdy użytkownik klika przycisk, wywoływana jest metoda onClick. I tu możesz zrobić różne rzeczy, jak na przykład przejść do innego ekranu, zapisać dane albo uruchomić jakąś akcję w tle. To jest dobry przykład wzorca projektowego zwanego Delegacja, który pomaga oddzielić to, co widzisz w interfejsie, od tego, co dzieje się w aplikacji. Dzięki temu łatwiej zarządzać kodem i wprowadzać zmiany. Fajnie jest, gdy logikę umieszczasz w osobnych metodach, bo wtedy testowanie całej aplikacji staje się prostsze. Przykłady? Możesz na przykład użyć OnClickListenera, żeby zrobić logowanie po kliknięciu przycisku lub wysłać formularz. Pamiętaj też, żeby unikać ciężkich operacji w metodzie onClick, żeby aplikacja działała płynnie.

Pytanie 6

Kod przedstawiony w języku XML/XAML określa:

<Switch
    android:id = "@+id/switch1"
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:background = "#00ffff"
    android:text = "Switch"
    tools:layout_editor_absoluteX = "176dp"
    tools:layout_editor_absoluteY = "389dp" />
A. listę rozwijaną
B. suwak
C. stepper
D. przełącznik
Kod przedstawiony w pytaniu to klasyczny przykład wykorzystania komponentu Switch w Androidzie. Switch, jak sama nazwa wskazuje, służy do przełączania między dwoma stanami — najczęściej włącz/wyłącz, aktywne/nieaktywne. Z punktu widzenia interfejsów mobilnych, przełącznik bardzo często znajduje zastosowanie w ustawieniach aplikacji, np. do szybkiego włączania trybu ciemnego, aktywacji powiadomień czy zezwalania na lokalizację. Ten konkretny xml zawiera podstawowe atrybuty, jak android:id, layout_width, layout_height oraz background, czyli kolor tła, co od razu sugeruje, że nie jest to np. dropdown czy suwak. Co ciekawe, Switch różni się od CheckBoxa tym, że wizualnie lepiej komunikuje zmianę trybu (przesuwający się znacznik), co moim zdaniem zwiększa użyteczność, szczególnie jeśli użytkownik ma szybko zrozumieć, co ustawia. Standardy Material Design wręcz zalecają stosowanie Switch do kontrolowania pojedynczych ustawień, bo jest to bardziej czytelne niż inne widgety. Warto pamiętać, że Switch ma różne warianty i można go rozbudować o obsługę zdarzeń onCheckedChangeListener w kodzie Java albo Kotlin, przez co staje się bardzo elastyczny. Odpowiedź przełącznik jest więc zgodna ze wszystkimi cechami tej kontrolki i jej zastosowaniami w praktyce.

Pytanie 7

Który z wymienionych dysków oferuje najszybszy dostęp do danych?

A. HDD 7200 RPM, SATA III, 64 MB Cache
B. SSD SATA III, prędkość odczytu do 550 MB/s
C. SSD NVMe PCIe 3.0, prędkość odczytu do 3500 MB/s
D. HDD 5400 RPM, SATA II, 32 MB Cache
Odpowiedź wskazująca na SSD NVMe PCIe 3.0 jako najszybszy dysk do odczytu danych jest zgodna z obecnymi standardami technologii przechowywania. Dyski SSD (Solid State Drive) korzystają z pamięci flash, co pozwala na znacznie szybszy dostęp do danych w porównaniu do tradycyjnych dysków HDD (Hard Disk Drive), które działają na zasadzie mechanicznych ruchomych elementów. Dyski NVMe (Non-Volatile Memory Express) są szczególnie wydajne, ponieważ wykorzystują interfejs PCIe (Peripheral Component Interconnect Express), co umożliwia znacznie wyższe prędkości transferu danych. W przypadku SSD NVMe PCIe 3.0, prędkość odczytu może osiągać do 3500 MB/s, co jest znaczącą różnicą w porównaniu do prędkości odczytu w dyskach HDD i SSD SATA. Przykładowo, w zastosowaniach takich jak edycja wideo, renderowanie grafiki 3D czy gry komputerowe, wyższa prędkość odczytu przekłada się na szybsze ładowanie danych i lepszą wydajność systemu. Standardy SATA III dla HDD również mają swoje ograniczenia, ponieważ maksymalna teoretyczna prędkość transferu wynosi 6 Gb/s, co jest dalekie od osiągów oferowanych przez NVMe. Dlatego SSD NVMe PCIe 3.0 jest zdecydowanym liderem w kontekście wydajności odczytu danych w porównaniu do pozostałych opcji.

Pytanie 8

Jednym z kroków publikacji aplikacji mobilnej w Google Play są testy Beta, które charakteryzują się tym, że są:

A. realizowane przez zespół zatrudnionych testerów z Google
B. prowadzone w oparciu o dokument zawierający przypadki testowe
C. podzielone na testy dotyczące funkcjonalności, wydajności i skalowalności
D. przeprowadzane przez grupę docelowych użytkowników aplikacji
Testy Beta w kontekście publikacji aplikacji na Google Play to bardzo istotny element całego procesu wydawniczego. Tak naprawdę chodzi tutaj o to, by oddać aplikację w ręce prawdziwych użytkowników, którzy potencjalnie będą z niej korzystać po premierze. To nie są testy laboratoryjne, gdzie wszystko jest przewidywalne i kontrolowane, tylko taki trochę poligon doświadczalny w rzeczywistym środowisku. Dzięki temu deweloperzy mogą wyłapać błędy, których nie dało się zauważyć podczas testów wewnętrznych czy automatycznych. Google umożliwia zaproszenie do testów Beta konkretnej grupy osób – czasem są to osoby z mailing listy, czasem aktywna społeczność, a czasem po prostu przypadkowi użytkownicy spełniający określone kryteria. Takie podejście jest zgodne z najlepszymi praktykami branżowymi, bo zapewnia bardziej realistyczny feedback. Moim zdaniem właśnie testy Beta ratują najwięcej aplikacji przed poważnymi wpadkami po oficjalnym wydaniu – użytkownicy zgłaszają nie tylko błędy, ale też własne pomysły i uwagi, które mogą zupełnie zmienić kierunek rozwoju produktu. To jest w sumie taka wersja MVP na etapie gotowego produktu, tylko że z dużo szerszą i bardziej zaangażowaną bazą testującą. Testy Beta są nieocenione, bo pozwalają zobaczyć aplikację oczami jej przyszłych użytkowników i szybko reagować na ich potrzeby, zanim pójdzie do szerokiej dystrybucji. Praktyka pokazuje, że pomijanie tego kroku to trochę proszenie się o złe oceny i negatywne recenzje już po premierze.

Pytanie 9

Co będzie wynikiem wykonania poniższego kodu w języku C#?

string text = "hello world";
var result = string.Join("", text.Split(' ').Select(s => char.ToUpper(s[0]) + s.Substring(1)));
Console.WriteLine(result);
A. HelloWorld
B. HELLO WORLD
C. Hello World
D. helloworld
Wynikiem wykonania kodu nie jest 'HELLO WORLD', a przyczyna tego nieporozumienia tkwi w sposobie przetwarzania tekstu. Warto zauważyć, że kod nie wykonuje prostej konwersji wszystkich liter na wielkie, jak sugeruje ta odpowiedź. Zamiast tego, każda pierwsza litera każdego słowa jest zmieniana na wielką, a pozostałe litery pozostają w oryginalnym stanie, co w przypadku 'hello world' daje wyrażenie 'Hello World'. To zrozumienie jest kluczowe w programowaniu, ponieważ często błędnie zakładamy, że transformacje na tekstach działają w sposób jednorodny. Inną niepoprawną odpowiedzią jest 'helloworld', która również pomija konwersję pierwszych liter na wielkie, co jest kluczowym aspektem działania kodu. Warto rozważyć, że przy pracy z tekstami w C# istotne są szczegóły, takie jak wielkość liter, a dobre praktyki programistyczne wymagają zrozumienia, jak funkcje manipulujące tekstem działają. Niepoprawne odpowiedzi często wynikają z niezrozumienia schematu, jakim jest łączenie, a nie tylko konwersji liter. Użytkownicy powinni zawsze testować swoje założenia poprzez praktyczne próby w kodowaniu, aby unikać takich nieporozumień.

Pytanie 10

Co to jest SPA (Single Page Application)?

A. Format pliku używany w aplikacjach do przetwarzania danych
B. Technika optymalizacji kodu w aplikacjach JavaScript
C. Metoda projektowania interfejsu użytkownika dla aplikacji mobilnych
D. Aplikacja webowa działająca na jednej stronie, dynamicznie aktualizująca treść bez przeładowywania całej strony
Single Page Application (SPA) to typ aplikacji internetowej, która działa na jednej stronie, umożliwiając dynamiczne ładowanie treści bez konieczności przeładowania całej witryny. W tradycyjnych aplikacjach webowych, każda interakcja użytkownika, która wymagała zmiany treści, wiązała się z odświeżeniem strony. W przypadku SPA, korzysta się z technologii takich jak AJAX, WebSockets czy API, co pozwala na asynchroniczne pobieranie danych z serwera. Przykłady SPA to popularne frameworki i biblioteki, takie jak React, Angular czy Vue.js. Dzięki tym technologiom, użytkownicy mogą doświadczyć płynniejszego i bardziej responsywnego interfejsu. Dobrą praktyką w projektowaniu SPA jest stosowanie wzorców projektowych, takich jak MVC (Model-View-Controller), co ułatwia zarządzanie kodem oraz jego modułowość. SPA są szczególnie przydatne w aplikacjach wymagających intensywnej interakcji, takich jak platformy e-commerce czy aplikacje społecznościowe, gdzie kluczowa jest szybkość i komfort użytkowania.

Pytanie 11

W przedstawionym filmie ukazano kreator interfejsu użytkownika, dla którego automatycznie powstaje

A. obsługa przycisku ekranu dotykowego
B. kod XML
C. obsługa wciśniętego przycisku
D. kod Java
Kod XML jest obecnie najczęściej stosowanym formatem do definiowania wyglądu interfejsów użytkownika w takich narzędziach jak Android Studio czy różnego rodzaju designery graficzne. Kiedy projektujesz layout aplikacji mobilnej albo desktopowej, duża część nowoczesnych narzędzi tworzy właśnie pliki XML, które następnie są interpretowane przez system w czasie uruchamiania aplikacji. Ułatwia to rozdzielenie logiki aplikacji od jej prezentacji, co wydaje się fundamentalne przy większych projektach. Moim zdaniem takie podejście daje ogromne korzyści – można łatwo modyfikować wygląd bez dotykania kodu źródłowego. W praktyce, jeśli używasz np. Android Studio, zbudujesz interfejs przeciągając przyciski czy pola tekstowe, a pod spodem dostaniesz czytelny plik XML. To przyspiesza pracę, zwiększa czytelność projektu i pozwala na późniejsze automatyczne generowanie dokumentacji albo testów interfejsu. Takie standardy są rekomendowane nie tylko przez Google, ale też szeroko stosowane w innych środowiskach, jak chociażby XAML w Microsoft czy FXML w JavaFX. Przezroczystość działania tych narzędzi sprawia, że łatwiej jest pracować zespołowo, bo każdy może szybko zorientować się w strukturze UI patrząc na XML-a. Samo generowanie kodu XML przez narzędzia graficzne to duży krok w kierunku lepszej organizacji pracy i zgodności ze współczesnymi praktykami branżowymi.

Pytanie 12

Jakie rozwiązanie jest najbardziej odpowiednie przy projektowaniu aplikacji, która ma funkcjonować na różnych systemach operacyjnych?

A. Wykorzystanie technik responsywnego projektowania interfejsu
B. Pełne dopasowanie aplikacji do systemu Windows
C. Opracowanie dedykowanego kodu dla każdej platformy
D. Koncentrowanie się wyłącznie na estetyce aplikacji
Przy projektowaniu aplikacji na różne systemy operacyjne łatwo wpaść w pułapkę starych nawyków albo uproszczonego myślenia, co często prowadzi do nietrafionych decyzji projektowych. Częstą pokusą jest pisanie osobnego, dedykowanego kodu dla każdej platformy. Kto kiedyś pisał natywne aplikacje pod Windowsa i MacOS ten wie, jak szybko taki model staje się koszmarem w utrzymaniu. Z mojego doświadczenia wynika, że taka fragmentacja powoduje, że każda zmiana musi być wdrażana i testowana osobno, co prowadzi do rozjazdu funkcjonalności i wzrostu kosztów – a to jest dokładnie odwrotność tego, czego oczekuje się od nowoczesnego software’u. Z kolei pełne dopasowanie tylko do Windowsa całkowicie pomija wymagania użytkowników innych platform i zamyka aplikację na szerokie grono odbiorców. Takie podejście bywa wygodne na początku, ale ogranicza potencjał produktu i w praktyce jest sprzeczne z dzisiejszymi oczekiwaniami rynku, gdzie multiplatformowość to już standard, nie luksus. Skupianie się wyłącznie na estetyce aplikacji to chyba najczęstszy błąd początkujących – ładny wygląd nie gwarantuje użyteczności, dostępności ani funkcjonalności na różnych systemach operacyjnych. Branża IT od lat promuje podejście user-centered design, gdzie ważniejsza od samej estetyki jest adaptacja interfejsu do różnorodnych urządzeń i warunków użytkowania. Responsywny design bazuje na elastyczności oraz automatycznym dostosowywaniu się do środowiska, co pozwala uniknąć masy problemów z kompatybilnością i znacznie poprawia doświadczenie użytkownika. W mojej opinii, ignorowanie tych aspektów to częsty powód niepowodzeń nawet ambitnych projektów. Warto patrzeć szerzej i planować rozwiązania, które są przyszłościowe, modularne oraz skalowalne.

Pytanie 13

Jakie kroki należy podjąć po wykryciu błędu w kodzie podczas testowania?

A. Zgłosić błąd użytkownikowi końcowemu
B. Usunąć moduł, który zawiera błąd
C. Pominąć błąd, jeżeli aplikacja funkcjonuje poprawnie
D. Naprawić błąd i przeprowadzić ponowne testy aplikacji
Po znalezieniu błędu w kodzie podczas testowania kluczowym krokiem jest poprawienie błędu i ponowne przetestowanie aplikacji. Taki cykl iteracyjny pozwala na eliminację błędów i zapewnienie, że aplikacja działa zgodnie z oczekiwaniami. Testowanie po każdej poprawce jest niezbędne, aby upewnić się, że wprowadzone zmiany nie wpłynęły negatywnie na inne części aplikacji. Taka praktyka jest integralną częścią Continuous Integration (CI) i Continuous Deployment (CD), które zakładają częste wdrażanie i testowanie kodu. Poprawienie błędów na wczesnym etapie rozwoju minimalizuje koszty i czas potrzebny na naprawę błędów w fazie produkcyjnej, co przyczynia się do stabilności i wysokiej jakości końcowego produktu.

Pytanie 14

Na ilustracji pokazano fragment emulacji iOS z elementem kontrolnym. Który fragment kodu XAML opisuje ten element?

Ilustracja do pytania
A. <Stepper Increment= "1" />
B. <Switch IsToggled= "true" />
C. <Slider Maximum= "255" />
D. <Entry IsPassword= "true" />
Kontrolka <Switch IsToggled= "true" /> w XAML to taki przełącznik. Ma dwa stany: włączony (true) i wyłączony (false). Można to porównać do zwykłego włącznika, tylko że w aplikacjach. Fajnie się z tego korzysta, bo pozwala szybko zmieniać ustawienia, nie trzeba nic więcej wpisywać. To jest dosyć intuicyjne dla użytkowników, więc można nim łatwo zarządzać funkcjami aplikacji.

Pytanie 15

Jak zostanie przedstawiony poniższy kod XAML?

Ilustracja do pytania
A. Rysunek 4
B. Rysunek 1
C. Rysunek 2
D. Rysunek 3
W przedstawionym kodzie XAML widoczna jest struktura składająca się z kilku elementów UI ułożonych w pionowym StackLayout co skutkuje wyświetleniem ich w pionowej kolejności. Pierwszym elementem jest Entry z placeholderem Imię a kolejnym Entry z placeholderem Nazwisko co determinuje obecność dwóch pól tekstowych tak jak w Rysunku 4. Następnie w kodzie znajduje się poziomy StackLayout z etykietą Zgoda RODO i przełącznikiem ustawionym na wartość true co oznacza że przełącznik jest domyślnie włączony. To również odpowiada widokowi na Rysunku 4. Kolejny element to Slider z ustawionymi kolorami MinimumTrackColor i MaximumTrackColor co pozwala na zmianę koloru paska suwaka co również jest widoczne w Rysunku 4. Na końcu znajduje się Button z tekstem Zapisz i jest to jedyny przycisk w całym układzie co także zgadza się z Rysunkiem 4. Rozumienie kodu XAML i jego renderowania jest kluczowe w tworzeniu aplikacji mobilnych ponieważ pozwala na precyzyjne określenie wyglądu i funkcjonalności interfejsu użytkownika i jest zgodne z najlepszymi praktykami w projektowaniu UI.

Pytanie 16

W zamieszczonym fragmencie kodu Java wskaż nazwę zmiennej, która może przechować wartość 'T'.

int zm1;
float zm2;
char zm3;
boolean zm4;
A. zm1
B. zm4
C. zm2
D. zm3
Poprawnie wskazana została zmienna 'zm3', której typ to 'char'. To właśnie zmienne typu 'char' w Javie służą do przechowywania pojedynczych znaków, takich jak na przykład litera 'T'. Zmienna 'char' przechowuje znak jako wartość liczbową zgodnie z kodowaniem Unicode, co pozwala na obsługę szerokiego zakresu znaków z różnych alfabetów. W praktyce często spotyka się sytuacje, gdzie potrzebujemy przechować czy odczytać pojedynczy znak – np. literę przy przetwarzaniu tekstu, analizowaniu plików, czy nawet w prostych grach tekstowych, gdzie np. sterowanie postacią opiera się o pojedyncze litery wciskane na klawiaturze. Moim zdaniem dobre zrozumienie typu 'char' to podstawa, bo łatwo pomylić go z typem 'String', który przechowuje jednak całe ciągi znaków, a nie pojedyncze znaki. Z punktu widzenia dobrych praktyk, zawsze warto dobierać możliwie najwęższy typ danych do zadania – jeżeli chcemy przechować jedną literę, typ 'char' jest po prostu najefektywniejszy. Nawiasem mówiąc, w Javie znak umieszczamy w pojedynczych apostrofach (np. 'T'), co jednoznacznie odróżnia je od tekstów (podwójne cudzysłowy). Osobiście zdarzało mi się kiedyś pomylić te typy i potem szukać błędów, więc warto zapamiętać tę różnicę. Warto też wiedzieć, że typ 'char' przydaje się np. do operacji na znakach w tablicach, przy konwersjach kodów ASCII czy nawet szyfrowaniu prostych tekstów. Zdecydowanie jest to typ, którego nie można pominąć w nauce Javy.

Pytanie 17

Która z wymienionych zasad jest istotna dla bezpiecznego użytkowania portali społecznościowych?

A. Zgłaszanie treści, które naruszają regulamin
B. Unikanie stosowania silnych haseł do konta
C. Udostępnianie jak największej ilości informacji osobowych
D. Regularne kontrolowanie ustawień prywatności
Regularne sprawdzanie ustawień prywatności jest kluczowym aspektem bezpiecznego korzystania z portali społecznościowych, ponieważ to właśnie te ustawienia decydują o tym, jakie informacje udostępniamy innym użytkownikom. Użytkownicy powinni być świadomi, że domyślne ustawienia prywatności często są skonfigurowane w sposób, który umożliwia szeroką dostępność ich danych osobowych. Przykładowo, wiele platform społecznościowych domyślnie ustawia profile jako publiczne, co oznacza, że każdy może zobaczyć ich zawartość. Zmieniając te ustawienia, użytkownicy mogą ograniczyć widoczność swoich postów, zdjęć, a także informacji osobistych tylko do wybranej grupy osób, co znacząco zwiększa ich bezpieczeństwo. Warto także regularnie aktualizować te ustawienia, ponieważ platformy często wprowadzają nowe funkcje, które mogą zmieniać domyślne zasady dotyczące prywatności. Zgodnie z wytycznymi RODO oraz innymi standardami ochrony danych osobowych, użytkownicy mają prawo do kontrolowania swoich informacji, co czyni regularne sprawdzanie ustawień prywatności nie tylko zaleceniem, ale również obowiązkiem każdego świadomego użytkownika internetu.

Pytanie 18

Jakie są korzyści z wykorzystania struktur danych typu mapa (np. HashMap w Javie) w kontekście tworzenia zbiorów danych?

A. Gdyż nie potrzebują znajomości wielkości danych przed kompilacją
B. Z powodu szybkiego uzyskiwania dostępu do elementów przy użyciu klucza
C. Ponieważ struktury danych typu mapa zajmują mniej pamięci niż tablice
D. Bo pozwalają na sortowanie danych bez dodatkowych działań
Tablice faktycznie zajmują mniej pamięci, ale nie mają takiego sposobu dostępu do danych jak mapa, bo korzystamy z indeksów. Mapa nie jest od tego, żeby sortować dane, chociaż da się to jakoś obejść, na przykład z TreeMap. Jest też taka kwestia, że jeśli nie znamy rozmiaru danych przed kompilacją, to to jest typowe dla list i wektorów, a mapa w sumie się w tym nie sprawdzi. No i HashMap działa na zasadzie dynamicznej alokacji, więc sama się powiększa, gdy dodajemy nowe elementy.

Pytanie 19

Co to jest Event Loop w JavaScript?

A. Technika obsługi zdarzeń w aplikacjach React
B. Mechanizm pozwalający na asynchroniczne wykonywanie kodu mimo jednowątkowej natury JavaScript
C. System zarządzania cyklem życia komponentów w Angular
D. Protokół komunikacji między różnymi częściami aplikacji webowej
Event Loop w JavaScript to kluczowy mechanizm, który umożliwia asynchroniczne wykonywanie kodu mimo jednowątkowej natury tego języka. JavaScript działa w jednym wątku, co oznacza, że może wykonywać jedną operację w danym czasie. Event Loop pozwala jednak na zarządzanie operacjami asynchronicznymi, takimi jak wywołania API czy operacje na danych, które mogą trwać dłużej. Dzięki temu, zamiast czekać na zakończenie tych operacji, kod może kontynuować wykonywanie innych zadań. W praktyce, gdy operacja asynchroniczna kończy się, jej wynik jest umieszczany w kolejce do przetworzenia, a Event Loop zajmuje się ich przetwarzaniem, kiedy główny wątek jest dostępny. To podejście sprawia, że aplikacje webowe są bardziej responsywne, ponieważ nie blokują interfejsu użytkownika podczas oczekiwania na zakończenie długoterminowych zadań. Dobrą praktyką jest zrozumienie działania Event Loop, ponieważ pozwala to na efektywniejsze zarządzanie asynchronicznością w kodzie JavaScript, co jest niezwykle istotne w przypadku rozwijania nowoczesnych aplikacji webowych.

Pytanie 20

Jakie są kluczowe zasady WCAG 2.0?

A. Elastyczna, prosta, przejrzysta, trwała
B. Ewolucyjna, interaktywna, efektywna
C. Dostosowana, błyskawiczna, mobilna, dostępna
D. Percepcyjna, operacyjna, zrozumiała, solidna
Zasady WCAG 2.0, czyli Wytycznych dotyczących dostępności treści internetowych, skupiają się na zapewnieniu, że strony internetowe są dostępne dla wszystkich użytkowników, niezależnie od ich zdolności. Główne zasady to percepcyjna, operacyjna, zrozumiała i solidna. Percepcyjna oznacza, że ​​wszystkie elementy na stronie muszą być przedstawione w sposób, który umożliwia ich percepcję przez różne zmysły, takie jak wzrok i słuch. Na przykład, tekst alternatywny dla obrazów pozwala osobom niewidomym zrozumieć zawartość wizualną. Operacyjna dotyczy interakcji użytkownika z treścią; nawigacja powinna być intuicyjna, a elementy interaktywne łatwo osiągalne. Zrozumiała oznacza, że ​​treść powinna być zrozumiała dla wszystkich użytkowników, co można osiągnąć poprzez prosty język i jasne instrukcje. Solidna koncentruje się na tym, aby treść była wystarczająco elastyczna, aby działała w różnych przeglądarkach i urządzeniach, co jest kluczowe w dobie różnorodności technologii. Przykładem wdrożenia tych zasad może być wykorzystanie ARIA (Accessible Rich Internet Applications), które wspomagają dostępność dynamicznych treści w aplikacjach internetowych.

Pytanie 21

Który z wymienionych mechanizmów pozwala na monitorowanie stanu użytkownika w trakcie sesji w aplikacji internetowej?

A. HTTP Headers
B. HTML Forms
C. Sesje (Sessions)
D. CSS Selectors
Sesje (sessions) to mechanizm wykorzystywany w aplikacjach webowych do śledzenia stanu użytkownika podczas sesji przeglądania. Sesje umożliwiają przechowywanie danych użytkownika na serwerze przez określony czas i identyfikowanie go za pomocą unikalnego identyfikatora (session ID), który jest zwykle przechowywany w ciasteczkach. Mechanizm sesji pozwala na implementację logowania, koszyków zakupowych oraz innych funkcji, które wymagają zachowania stanu między żądaniami HTTP. Sesje są kluczowe dla aplikacji wymagających autoryzacji i autentykacji, ponieważ umożliwiają śledzenie działań użytkownika bez konieczności wielokrotnego logowania. Zastosowanie sesji w aplikacjach zwiększa bezpieczeństwo i poprawia komfort użytkowania, a także umożliwia personalizację treści w czasie rzeczywistym.

Pytanie 22

Co to jest lazy loading w kontekście ładowania obrazów na stronie?

A. Metoda kompresji obrazów przed wysłaniem na serwer
B. Format przechowywania obrazów w pamięci podręcznej przeglądarki
C. Technika ładowania obrazów dopiero w momencie, gdy stają się widoczne dla użytkownika
D. Protokół transferu obrazów między serwerem a przeglądarką
Lazy loading to technika, która pozwala na ładowanie obrazów oraz innych zasobów dopiero w momencie, gdy stają się one widoczne dla użytkownika na ekranie. Dzięki temu oszczędzamy zasoby sieciowe i poprawiamy czas ładowania strony, co jest szczególnie istotne w kontekście optymalizacji SEO oraz doświadczenia użytkownika. Na przykład, w przypadku długiej strony internetowej z wieloma obrazami, lazy loading sprawia, że podczas przewijania strony obrazy nie są ładowane od razu, co zmniejsza obciążenie serwera i przyspiesza wczytywanie widocznych części strony. W praktyce można zastosować atrybuty takie jak "loading='lazy'" w znaczniku <img>, co jest zgodne z nowoczesnymi standardami HTML. Ponadto, wiele bibliotek i frameworków, jak np. Intersection Observer API, umożliwia zaawansowaną implementację lazy loadingu, co sprawia, że jest to obecnie powszechnie stosowana praktyka.

Pytanie 23

W klasie o nazwie samochod przypisano atrybuty: marka, rocznik, parametry[]. Atrybuty te powinny zostać zdefiniowane jako

A. interfejsy
B. metody
C. pola
D. funkcje
Pola w klasie samochod to właśnie te elementy, które przechowują dane, takie jak marka, rocznik czy tablica parametry. To jest absolutna podstawa programowania obiektowego – najczęściej spotyka się to w językach takich jak Java, C# albo nawet w Pythonie, choć tam często nazywamy je po prostu atrybutami. Dla przykładu, jeśli tworzysz klasę Samochod w C#, to pole 'marka' będzie np. typu string, 'rocznik' – int, a 'parametry' możesz zadeklarować jako tablicę albo listę (List<T>) zależnie od potrzeb. Przechowywanie danych w polach pozwala na lepszą organizację, bo każda instancja klasy ma swoje własne wartości tych pól. Tak się właśnie tworzy modele danych, na których potem operuje cała aplikacja – czy to baza samochodów w warsztacie, czy system ubezpieczeń komunikacyjnych. Takie podejście jest zgodne z zasadami hermetyzacji i solidnych, nowoczesnych standardów pisania kodu. Dużo profesjonalnych frameworków i narzędzi (np. Entity Framework, Hibernate) korzysta z takiego podejścia, nawet jeśli potem te pola opakowujesz w właściwości (properties). Krótko mówiąc, pola to nieodłączny element każdej klasy, która coś reprezentuje, i moim zdaniem nie da się dobrze projektować kodu obiektowego bez zrozumienia tej konwencji.

Pytanie 24

Która z poniższych deklaracji w języku C++ poprawnie opisuje tablicę dwuwymiarową?

A. int matrix[];
B. int matrix[3];
C. int matrix[3][3];
D. int matrix[3][3][3];
Deklaracja 'int matrix[3][3];' poprawnie definiuje tablicę dwuwymiarową w języku C++. Tablice dwuwymiarowe to kluczowe narzędzie do przechowywania macierzy i danych tabelarycznych. Każdy element macierzy jest dostępny poprzez dwa indeksy, co umożliwia łatwe odwzorowanie układów współrzędnych lub plansz w grach. Tablice tego rodzaju są wykorzystywane w algorytmach obliczeniowych, grafice komputerowej oraz analizie danych. Struktura 'matrix[3][3]' tworzy siatkę 3x3, która może przechowywać 9 elementów, co czyni ją efektywnym rozwiązaniem dla problemów wymagających przestrzennych danych.

Pytanie 25

Wzorzec projektowy "Metoda szablonowa" (Template method) stosuje się do:

A. gromadzenia obiektów w jednorodnej kolekcji
B. określenia szkieletu algorytmu i pozostawienia szczegółów implementacji dla podklas
C. centralizacji zarządzania wieloma instancjami obiektów
D. organizowania obiektów w hierarchiczne struktury drzewiaste
Wzorzec projektowy 'Metoda szablonowa' to naprawdę sprytna sprawa, szczególnie w programowaniu obiektowym. Ten wzorzec pozwala zdefiniować ogólną strukturę algorytmu w klasie bazowej, a szczegóły implementacji przekazać do podklas. Brzmi jak coś z teorii, ale w praktyce często się przydaje, bo daje kontrolę nad przepływem działania algorytmu, nie tracąc elastyczności. To taki kompromis: masz szkielet (np. metoda w klasie abstrakcyjnej), ale nie zamykasz drogi na własne pomysły w podklasach. Typowym przykładem może być system obsługi płatności: cała procedura (np. przetwarzanie zamówienia) jest ustalona, ale poszczególne kroki typu 'autoryzuj', 'zrealizuj' czy 'zatwierdź' można nadpisywać. Daje to porządek i spójność kodu, a przy okazji nie zamyka na zmiany. Moim zdaniem, jeśli w projekcie pojawia się powtarzalny schemat postępowania, który tylko w detalach się różni, to Metoda szablonowa jest jednym z najczystszych rozwiązań. Warto pamiętać, że to podejście zgodne z zasadą Hollywood: „Don’t call us, we’ll call you” – to szkielet decyduje, kiedy wywołać szczegóły. Wielu seniorów poleca ten wzorzec, bo upraszcza utrzymanie i rozwijanie kodu, a IDE typu IntelliJ czy Visual Studio świetnie ogarniają takie abstrakcyjne klasy. Szczerze – w wielu firmach to po prostu standard.

Pytanie 26

Jaki rodzaj ataku hakerskiego polega na bombardowaniu serwera ogromną ilością żądań, co prowadzi do jego przeciążenia?

A. Man-in-the-Middle
B. Phishing
C. SQL Injection
D. DDoS
Atak DDoS (Distributed Denial of Service) polega na zasypywaniu serwera dużą ilością zapytań, co prowadzi do jego przeciążenia i unieruchomienia. W tym rodzaju ataku, hakerzy wykorzystują sieć skompromitowanych komputerów, znanych jako botnety, aby wysłać ogromne ilości nieautoryzowanych żądań do docelowego serwera w krótkim czasie. Celem DDoS jest spowodowanie, że serwer nie jest w stanie odpowiedzieć na prawidłowe zapytania od autentycznych użytkowników, co skutkuje awarią usługi. Przykłady ataków DDoS obejmują SYN Flood, UDP Flood oraz HTTP Flood, gdzie każdy z tych typów wykorzystuje różne protokoły i metody do zablokowania normalnego ruchu. Standardy takie jak RFC 793 definiują protokół TCP, który może być narażony na ataki SYN Flood. Ważne jest, aby organizacje stosowały odpowiednie środki zabezpieczające, takie jak systemy detekcji intruzów (IDS), firewalle, oraz usługi ochrony DDoS, aby minimalizować ryzyko i skutki tych ataków.

Pytanie 27

Która z poniższych technologii jest używana do tworzenia animacji na stronach internetowych?

A. XML
B. MySQL
C. CSS Animations
D. HTTP Headers
CSS Animations to technologia, która pozwala na tworzenie dynamicznych efektów wizualnych na stronach internetowych. Umożliwia ona animowanie różnych właściwości CSS, takich jak kolor, położenie, rozmiar czy przezroczystość, w prosty sposób. Dzięki CSS Animations, deweloperzy mogą tworzyć płynne przejścia i efekty bez potrzeby używania JavaScriptu, co zwiększa wydajność i responsywność witryn. Przykładem zastosowania CSS Animations może być animowanie przycisków na stronie, które zmieniają kolor po najechaniu na nie kursorem. Z punktu widzenia dobrych praktyk, warto pamiętać o optymalizacji efektów animacyjnych, aby nie obciążały one zbytnio zasobów przeglądarki. CSS Animations są częścią standardu CSS3, co oznacza, że są szeroko wspierane przez różne przeglądarki i można je łatwo implementować w projektach webowych.

Pytanie 28

Jakie cechy posiada model prototypowy w zakresie zarządzania projektami?

A. Szczegółowym planowaniem każdego etapu projektu przed jego realizacją
B. Rozwojem produktu w sposób iteracyjny w krótkich cyklach
C. Przygotowaniem wersji systemu w ograniczonym zakresie w celu uzyskania opinii od użytkownika
D. Realizowaniem pełnej wersji produktu przed przeprowadzeniem testów
Model prototypowy w zarządzaniu projektami to taka sprytna technika, gdzie tworzymy coś w rodzaju wczesnej wersji systemu, czyli prototypu. To nam pozwala zebrać opinie od użytkowników i przetestować różne pomysły zanim w ogóle weźmiemy się za pełną wersję. Fajną sprawą jest to, że gdy mamy ten prototyp, to łatwiej wyłapać błędy, zanim wszystko zostanie w pełni zbudowane. Największa zaleta? Możemy dostosować i poprawiać aplikację na podstawie tego, co mówią użytkownicy. Dzięki temu ryzyko, że stworzymy coś, co nie spełnia ich oczekiwań, jest znacznie mniejsze. Prototypy to często chleb powszedni w projektach UX/UI, aplikacjach webowych czy oprogramowaniu dla firm, gdzie tak istotne jest, by dobrze trafiać w potrzeby końcowych użytkowników.

Pytanie 29

Modyfikator dostępu znajdujący się przed definicją metody Dodaj() w klasie Kalkulator sprawia, że:

protected void Dodaj() {}
A. jest ona dostępna zarówno w samej klasie, jak i w klasach dziedziczących po klasie Kalkulator
B. nie jest ona dostępna z poziomu klas, które są zaprzyjaźnione z klasą Kalkulator
C. nie jest ona osiągalna w klasach, które dziedziczą po klasie Kalkulator
D. jest ona możliwa do wykorzystania w programie głównym i można ją wywołać na instancji klasy Kalkulator
Modyfikator protected w językach takich jak C# czy Java oznacza, że metoda jest dostępna zarówno w tej samej klasie, jak i w każdej klasie, która po niej dziedziczy — niezależnie od tego, w którym miejscu projektu ta klasa pochodna się znajduje. To jest bardzo praktyczne, bo pozwala pisać tzw. szkieletowe klasy bazowe, udostępniając pewne funkcjonalności tylko klasom potomnym, a jednocześnie ukrywając je przed kodem zewnętrznym. Takie podejście umożliwia budowanie bezpiecznych i elastycznych struktur dziedziczenia, gdzie konkretne działania mogą być modyfikowane lub rozszerzane tylko tam, gdzie trzeba. Bardzo często spotyka się protected w dużych projektach, gdzie kluczowe funkcje mają być używane wyłącznie w rodzinie klas, a nie dostępne dla całego świata. Moim zdaniem, to świetny sposób na wymuszanie architektury i porządku w kodzie, no bo wiadomo, jak każdy miałby dostęp do wszystkiego, to zaraz byłby bałagan. Przykład praktyczny: pisząc klasę bazową Kalkulator, możesz mieć protected Dodaj(), a publicznie udostępnić tylko ogólną metodę Oblicz(). Dzięki temu masz większą kontrolę, co i jak jest wykorzystywane. Branżowo przyjęło się, że protected to taki złoty środek pomiędzy public a private, gwarantując odpowiednią enkapsulację i możliwość dziedziczenia. Warto to stosować świadomie, żeby potem nie mieć niespodzianek w dużych projektach.

Pytanie 30

Jakie z wymienionych narzędzi pozwala na jednoczesne korzystanie z systemów BIN, DEC i HEX?

A. Microsoft Word
B. Przeglądarka grafów
C. Kalkulator systemowy
D. GIMP
Kalkulator systemowy to narzędzie, które umożliwia użytkownikom pracę z różnymi systemami liczbowymi, takimi jak system dziesiętny (DEC), binarny (BIN) oraz szesnastkowy (HEX). Jego funkcjonalność pozwala na konwersję wartości liczbowych pomiędzy tymi systemami, co jest niezwykle przydatne w kontekście programowania, inżynierii komputerowej oraz nauk przyrodniczych. Dzięki kalkulatorowi systemowemu, użytkownicy mogą wprowadzać liczby w jednym systemie, a następnie uzyskiwać ich odpowiedniki w pozostałych systemach, co znacznie ułatwia analizę danych. Na przykład, wpisując liczbę w systemie binarnym, można natychmiast zobaczyć jej reprezentację w systemie dziesiętnym i szesnastkowym, co jest kluczowe w zadaniach związanych z konwersją kodów czy obliczeniami w architekturze komputerowej. Ponadto, kalkulatory systemowe często zawierają funkcje umożliwiające przeprowadzanie bardziej skomplikowanych operacji, takich jak dodawanie czy odejmowanie w różnych systemach liczbowych, co czyni je nieocenionym narzędziem w programowaniu i obliczeniach naukowych. Narzędzia te są zgodne z powszechnie przyjętymi standardami, takimi jak IEEE 754 dla reprezentacji liczb zmiennoprzecinkowych, co zapewnia ich wysoką dokładność i niezawodność w obliczeniach.

Pytanie 31

Ergonomiczną oraz właściwą pozycję do pracy przy komputerze zapewni fotel, którego

A. oparcie w rejonie szyi jest nachylone do przodu o 40ᵒ
B. podłokietniki są 30 cm powyżej blatu
C. podłokietniki znajdują się 20 cm poniżej blatu
D. oparcie wspiera lordozę w dolnym odcinku pleców
Niepoprawne odpowiedzi dotyczące ergonomii krzesła przy komputerze zawierają różne nieprawidłowości, które mogą prowadzić do dyskomfortu oraz problemów zdrowotnych. Odpowiedź, w której podłokietniki są 20 cm niżej niż blat, jest niewłaściwa, ponieważ tak duża odległość może zmuszać ramiona do unikania naturalnej pozycji, co prowadzi do napięcia mięśni i bólu karku. Podłokietniki powinny wspierać ramiona w sposób, który pozwala na relaksację ich mięśni. Z kolei odpowiedź, w której podłokietniki są 30 cm wyżej niż blat, również jest niepożądana, ponieważ wywołuje nadmierne napięcie w przedramionach oraz barkach. Takie ustawienie może skutkować przewlekłymi dolegliwościami, jak zespół cieśni nadgarstka. Oparcie w odcinku szyi pochylone do przodu o 40 stopni jest również niekorzystne, gdyż wymusza nienaturalną pozycję głowy, co może prowadzić do dolegliwości takich jak bóle głowy oraz problemy z szyją. Właściwe ustawienie oparcia krzesła jest kluczowe dla utrzymania ergonomicznej postawy, co powinno być zgodne z zaleceniami ergonomii i normami, aby zapewnić długoterminowy komfort pracy przy komputerze.

Pytanie 32

Jakie jest podstawowe działanie w ochronie miejsca zdarzenia?

A. Usunięcie niebezpiecznych przedmiotów z otoczenia
B. Zagwarantowanie stabilności ciała rannego
C. Zastosowanie sterylnych materiałów opatrunkowych
D. Zagwarantowanie odpowiedniego oświetlenia
Z mojego doświadczenia, usunięcie niebezpiecznych rzeczy z miejsca, gdzie doszło do wypadku, to naprawdę kluczowa sprawa. Dzięki temu zmniejszamy szanse na dodatkowe obrażenia i możemy lepiej pomóc poszkodowanemu, nie narażając siebie na ryzyko. Na przykład, warto odsunąć ostre narzędzia, wyłączyć działające maszyny czy podnieść ciężkie przedmioty, które mogłyby kogoś zranić. Takie działania są istotne w każdej sytuacji, czy to wypadek na drodze, czy w pracy.

Pytanie 33

Co zostanie wyświetlone w konsoli po wykonaniu poniższego kodu?

let arr = [1, 2, 3, 4, 5];
let result = arr.filter(num => num % 2 === 0);
console.log(result);
A. [2, 4]
B. [1, 2, 3, 4, 5]
C. 2,4
D. [1, 3, 5]
Wynik działania podanego kodu to [2, 4], ponieważ zastosowana funkcja filter tworzy nową tablicę, w której znajdują się tylko te elementy, które spełniają określony warunek. W tym przypadku warunkiem jest to, że element musi być parzysty (num % 2 === 0). Z tablicy arr, która zawiera liczby od 1 do 5, tylko liczby 2 i 4 spełniają ten warunek. Filtracja danych jest bardzo przydatna w programowaniu, zwłaszcza w kontekście pracy z dużymi zbiorami danych, gdzie można łatwo wyodrębnić interesujące nas elementy. Stosowanie takich metod, jak filter, jest zgodne z zasadami programowania funkcyjnego, które promują użycie funkcji do przetwarzania danych w sposób bardziej zwięzły i czytelny. W praktyce, funkcja filter może być używana do filtrowania danych z API, przetwarzania zbiorów danych w aplikacjach, czy też w analizach danych. Takie podejście zwiększa wydajność i czytelność kodu, co jest istotne w długoterminowym utrzymaniu projektów.

Pytanie 34

Który z wymienionych poniżej przykładów stanowi system informacji przetwarzany przez system informatyczny?

A. System wentylacyjny w biurowcach
B. System zarządzania oświetleniem drogowym
C. System PESEL
D. System do monitorowania temperatury serwerów
System PESEL (Powszechny Elektroniczny System Ewidencji Ludności) jest przykładem systemu informacji przetwarzanym przez system informatyczny, ponieważ gromadzi, przetwarza i udostępnia dane osobowe obywateli Polski. Jest to złożony system, który działa na bazie zintegrowanych baz danych, umożliwiający identyfikację osób, przydzielanie numerów PESEL oraz zarządzanie informacjami o statusie mieszkańców. System ten jest niezbędny dla organów administracji publicznej, umożliwiając im efektywne zarządzanie danymi obywateli w kontekście takich usług, jak wydawanie dowodów osobistych, rejestracja wyborców, a także w kontekście ochrony zdrowia i ubezpieczeń społecznych. PESEL jest zgodny z Europejskim Ogólnochronnym Rozporządzeniem o Ochronie Danych Osobowych (RODO), co dodatkowo podkreśla jego rolę jako kluczowego systemu informacyjnego w obiegu danych w Polsce. Przykłady zastosowań systemu PESEL obejmują obsługę wniosków o świadczenia socjalne oraz dostęp do e-usług, co świadczy o jego fundamentalnym znaczeniu w administrowaniu danymi ludnościowymi.

Pytanie 35

Zapisany fragment w C# wskazuje na definicję klasy Car, która:

public class Car: Vehicle {     ...   }
A. dziedziczy po Vehicle
B. używa prywatnych pól klasy Vehicle
C. jest powiązana z klasą Vehicle
D. stanowi klasę bazową (nie dziedziczy po żadnej klasie)
W przedstawionym kodzie w języku C# mamy definicję klasy Car, która dziedziczy po klasie Vehicle. Dziedziczenie to fundamentalny mechanizm programowania obiektowego, pozwalający jednej klasie przejąć właściwości i metody innej klasy. W praktyce oznacza to, że klasa Car automatycznie zyskuje dostęp do metod i właściwości publicznych oraz chronionych klasy Vehicle, co umożliwia ponowne użycie kodu i zwiększa jego przejrzystość. Dziedziczenie jest kluczowe w projektowaniu skalowalnych systemów, gdzie umożliwia tworzenie bardziej specyficznych klas na podstawie klas ogólnych, co jest zgodne z zasadą DRY (Don't Repeat Yourself). Przykładowo, jeżeli klasa Vehicle zawiera metody takie jak Start() i Stop(), klasa Car może je wykorzystać bez konieczności ponownego definiowania. Dobre praktyki w programowaniu obiektowym zalecają wykorzystywanie dziedziczenia do tworzenia hierarchii klas, które logicznie odwzorowują relacje „jest-a” pomiędzy obiektami w systemie. Ważne jest też unikanie zbyt głębokiego dziedziczenia, co może prowadzić do skomplikowanego i trudnego w utrzymaniu kodu. Zrozumienie dziedziczenia jest kluczowe dla efektywnego wykorzystania wzorców projektowych, takich jak wzorzec projektowy Adapter czy Dekorator.

Pytanie 36

Diagramem, który służy do śledzenia realizacji zadań przez członków zespołu projektowego, może być

A. związków encji
B. aktywnosci UML
C. Gantta
D. Venna
Diagram Gantta to moim zdaniem jeden z najbardziej praktycznych narzędzi używanych w zarządzaniu projektami, zwłaszcza tam, gdzie zależy nam na zobrazowaniu postępu prac. Ten diagram pozwala nie tylko zobaczyć, jakie zadania są zaplanowane na określony czas, ale też kto za nie odpowiada i jak się mają względem siebie. Osobiście uważam, że z Ganttem łatwiej ogarnąć, kiedy które zadanie się zaczyna, kiedy kończy i czy przypadkiem nie koliduje z innymi. Praktyka pokazuje, że bez takiej wizualizacji łatwo o chaos, szczególnie w większych projektach, gdzie zespół jest rozproszony lub działa zdalnie. Pracując z zespołami spotkałem się z sytuacjami, gdzie właśnie Gantta używało się na codziennych "standupach" do oceny postępu i przydzielania nowych zadań. Standardy branżowe, jak np. PMBOK czy metodyka PRINCE2, także polecają diagram Gantta do śledzenia i raportowania statusu projektu. Co ciekawe, narzędzie to jest wykorzystywane zarówno w klasycznym podejściu do zarządzania projektami, jak i coraz częściej w zespołach zwinnych, choć tam bywa trochę uproszczone. Generalnie – jak dla mnie, umiejętność czytania i tworzenia diagramów Gantta to absolutna podstawa, jeśli ktoś myśli poważnie o pracy przy projektach, niezależnie od branży.

Pytanie 37

Jakie wyrażenie logiczne powinno być użyte, aby zweryfikować, czy zmienna x zawiera wartości ujemne lub znajduje się w zakresie (10, 100)?

A. x > 10 || x < 100 || x < 0
B. x > 10 || x < 100 || x < 0
C. (x > 10 || x < 100) && x < 0
D. (x > 10 && x < 100) || x < 0
To wyrażenie logiczne: (x > 10 && x < 100) || x < 0 jest najtrafniejsze, bo dokładnie oddaje założone warunki: zmienna x powinna być ujemna lub znajdować się w zakresie od 10 do 100 (bez tych wartości granicznych, czyli przedział otwarty). Z mojego doświadczenia wynika, że takie podejście jest stosowane wszędzie tam, gdzie istotne są szczegółowe warunki – np. w walidacji danych wejściowych czy podczas filtrowania w bazach danych. Operator || gwarantuje, że jeśli chociaż jeden z warunków jest prawdziwy (czyli x jest mniejsze od 0 lub należy do przedziału 10-100), całe wyrażenie zwróci true. Warto też pamiętać, że zastosowanie operatora && wewnątrz nawiasu zapewnia, że oba warunki (x > 10 oraz x < 100) muszą być spełnione jednocześnie, czyli x leży pomiędzy tymi liczbami. Odpowiedniki takiego zapisu znajdziesz praktycznie w każdym języku programowania – od Javy po Pythona. Branżowe standardy jasno wskazują na czytelność i jednoznaczność warunków logicznych, szczególnie jeśli kod ma być utrzymywany przez inne osoby lub przez nas samych za kilka miesięcy. Uważam, że precyzyjne formułowanie wyrażeń tego typu to podstawa dobrego programisty – naprawdę warto się tego trzymać, bo później mniej błędów wychodzi na produkcji, a kod jest dużo łatwiej przetestować. Często spotykam się z przypadkami, gdzie ktoś pomija nawiasy lub źle łączy operatory i potem są problemy z błędami logicznymi, dlatego warto wyrobić sobie taki nawyk dokładnego zapisywania warunków.

Pytanie 38

Co to jest CORS (Cross-Origin Resource Sharing)?

A. Metoda kompresji danych w aplikacjach webowych
B. System zarządzania plikami statycznymi w aplikacjach SPA
C. Mechanizm bezpieczeństwa określający, które domeny mogą uzyskiwać dostęp do zasobów na serwerze
D. Protokół komunikacji między różnymi bazami danych
CORS to nie protokół komunikacji między różnymi bazami danych, co sugeruje pierwsza z niepoprawnych odpowiedzi. Protokoły takie jak JDBC czy ODBC są odpowiedzialne za komunikację między bazami danych, a nie CORS. CORS nie jest też metodą kompresji danych w aplikacjach webowych, co mogłoby wprowadzać w błąd w kontekście optymalizacji transferu danych. Kompresja danych jest realizowana przez inne technologie, takie jak Gzip, które zmniejszają rozmiar przesyłanych informacji, ale nie mają związku z ograniczeniami dostępu do zasobów. Ponadto, CORS nie ma nic wspólnego z zarządzaniem plikami statycznymi w aplikacjach SPA. W rzeczywistości, pliki statyczne mogą być serwowane z różnych źródeł, a CORS odgrywa kluczową rolę w ustalaniu, czy te źródła mogą być dostępne przez przeglądarkę. To zrozumienie jest kluczowe, ponieważ wiele osób myli pojęcia związane z komunikacją w sieci, co prowadzi do fałszywych przekonań. Zatem ważne jest, aby nie tylko znać definicje, ale także rozumieć, jak różne technologie współdziałają ze sobą w kontekście bezpieczeństwa i dostępu do danych.

Pytanie 39

Jakie są różnice między dialogiem modalnym a niemodalnym?

A. Dialog modalny jest ograniczony wyłącznie do aplikacji konsolowych
B. Dialog modalny wymaga zamknięcia, aby powrócić do głównego okna aplikacji, natomiast dialog niemodalny tego nie wymaga
C. Dialog modalny umożliwia interakcję z innymi oknami aplikacji, a dialog niemodalny tego nie pozwala
D. Dialog modalny działa w tle, podczas gdy dialog niemodalny jest zawsze wyświetlany na pierwszym planie
Dialog modalny to okno dialogowe, które wymaga interakcji użytkownika przed powrotem do głównego okna aplikacji. Tego rodzaju okna są często wykorzystywane do wyświetlania komunikatów, potwierdzeń lub formularzy wymagających danych wejściowych. Modalność zapewnia, że użytkownik nie może przejść do innej części aplikacji bez uprzedniego zamknięcia okna dialogowego. To rozwiązanie pomaga w wymuszeniu ważnych akcji, takich jak potwierdzenie usunięcia pliku lub zatwierdzenie płatności. Dialog niemodalny natomiast pozwala na interakcję z resztą aplikacji nawet wtedy, gdy okno dialogowe jest otwarte, co sprawdza się w mniej krytycznych sytuacjach, np. podczas wyświetlania dodatkowych opcji.

Pytanie 40

Jakie składniki są kluczowe w dynamicznym formularzu logowania?

A. Plik graficzny
B. Nagłówek HTTP
C. Pola tekstowe do wprowadzania danych użytkownika
D. Tabela w bazie danych
Pola tekstowe do wprowadzania danych użytkownika są kluczowym elementem dynamicznego formularza logowania. Umożliwiają one użytkownikowi wprowadzenie informacji, takich jak nazwa użytkownika i hasło, co jest niezbędne do uwierzytelnienia w systemie. Formularze HTML wykorzystują tagi <input> do tworzenia pól tekstowych, a ich interakcja z użytkownikiem może być wspierana przez JavaScript lub inne technologie frontendowe, które walidują dane i zapewniają bezpieczeństwo procesu logowania. Pola tekstowe mogą być wzbogacone o atrybuty, takie jak 'required', 'pattern' czy 'type', które dodatkowo zabezpieczają formularz i ułatwiają użytkownikowi poprawne wypełnienie danych.