Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 8 czerwca 2026 07:06
  • Data zakończenia: 8 czerwca 2026 07:11

Egzamin zdany!

Wynik: 38/40 punktów (95,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

Które z poniższych pojęć nie jest związane z React.js?

A. Hooks
B. Directives
C. Virtual DOM
D. JSX
Directives to pojęcie związane głównie z frameworkiem Angular, a nie z React.js. W kontekście Angular, dyrektywy są używane do rozszerzania HTML-a o nowe funkcje, co pozwala na bezpośrednią manipulację DOM-em i tworzenie niestandardowych znaczników. React.js natomiast korzysta z zupełnie innej filozofii, w której komponenty są podstawowym budulcem aplikacji. W React.js używamy JSX, co jest syntaktycznym rozszerzeniem JavaScriptu, pozwalającym na pisanie kodu w sposób przypominający HTML. Dodatkowo, React korzysta z Virtual DOM, co zwiększa wydajność poprzez minimalizację operacji na prawdziwym DOM-ie. React wprowadził także mechanizm Hooks, który pozwala na użycie stanu i efektów ubocznych w komponentach funkcyjnych, co jest istotne w nowoczesnym podejściu do tworzenia aplikacji. Zrozumienie różnic pomiędzy tymi podejściami jest kluczowe dla efektywnego korzystania z odpowiednich narzędzi w zależności od wymagań projektu.

Pytanie 2

Co to jest wskaźnik w języku C?

A. Typ danych do zapisywania tekstów
B. Zmienna przechowująca wartość logiczną
C. Funkcja do dynamicznej alokacji pamięci
D. Zmienna przechowująca adres pamięci
Wskaźnik w języku C to zmienna przechowująca adres pamięci innej zmiennej. Umożliwia bezpośrednią manipulację pamięcią, co czyni wskaźniki niezwykle potężnym narzędziem w programowaniu niskopoziomowym. Dzięki wskaźnikom można dynamicznie alokować pamięć, przekazywać duże struktury danych do funkcji bez ich kopiowania oraz implementować struktury danych, takie jak listy, drzewa czy grafy. Wskaźniki umożliwiają także iterowanie po tablicach i efektywne zarządzanie zasobami systemowymi, co czyni je kluczowym elementem w programowaniu systemowym.

Pytanie 3

Który element dokumentacji technicznej jest istotny dla ustalenia metod ochrony danych w aplikacji?

A. Koncepcja interfejsu użytkownika
B. Harmonogram zarządzania zadaniami
C. Opis architektury klient-serwer
D. System ochrony aplikacji
System zabezpieczeń aplikacji to kluczowy element specyfikacji technicznej, który określa metody ochrony danych. Obejmuje on takie elementy jak szyfrowanie, kontrola dostępu, uwierzytelnianie oraz autoryzacja. Prawidłowo zaprojektowany system zabezpieczeń zapewnia ochronę przed atakami hakerskimi, nieautoryzowanym dostępem oraz utratą danych. W aplikacjach webowych i mobilnych systemy zabezpieczeń obejmują również techniki takie jak dwuskładnikowe uwierzytelnianie (2FA), zabezpieczenia API oraz regularne audyty bezpieczeństwa. Implementacja solidnych mechanizmów zabezpieczeń jest niezbędna, aby zapewnić zgodność z regulacjami prawnymi i zyskać zaufanie użytkowników.

Pytanie 4

Aplikacje webowe stworzone z użyciem frameworka Angular lub biblioteki React, działające na standardowych portach, można uruchomić na lokalnym serwerze, wpisując w przeglądarkę

A. localhost:5001 (React) lub localhost:8080 (Angular)
B. localhost:3000 (React) lub localhost:4200 (Angular)
C. localhost:8000 (React) lub localhost:49887 (Angular)
D. localhost:8080 (React) lub localhost:8000 (Angular)
React domyślnie startuje na porcie 3000, a Angular na 4200 – to są takie standardy, które praktycznie wszyscy w branży znają i stosują. Kiedy zaczynasz nowy projekt w React, korzystając na przykład z create-react-app, serwer deweloperski po prostu nasłuchuje na http://localhost:3000. Analogicznie, jak generujesz projekt w Angular CLI i odpalasz ng serve, wtedy aplikacja wystartuje na http://localhost:4200. To są domyślne porty – nie musisz nic specjalnie ustawiać, wystarczy wpisać te adresy w przeglądarce. Z mojego doświadczenia, dobrze jest zapamiętać te ustawienia, bo praktycznie na każdym warsztacie czy bootcampie te adresy padają od ręki. Jeśli chodzi o praktykę, czasami port jest już zajęty i wtedy narzędzie zaproponuje inny, ale te wartości startowe to taka baza. Warto pamiętać, że zmiana portu wynika zazwyczaj z konfliktu, a nie z jakiejś specjalnej potrzeby. Dodatkowo, rozpoznanie tych portów pozwala szybciej debugować problemy z uruchomieniem aplikacji – jak coś nie wstaje na tych adresach, to od razu wiadomo, gdzie szukać. Ogólnie rzecz biorąc, korzystanie z tych domyślnych portów przyspiesza współpracę w zespole, bo każdy wie, gdzie szukać aplikacji, więc nie trzeba się rozpisywać w README, na jakim porcie coś działa. Moim zdaniem, to jeden z tych drobnych szczegółów, które składają się na dobre nawyki programistyczne.

Pytanie 5

Kolor Pale Green w modelu RGB przedstawia się jako RGB(152, 251, 152). Jaki jest szesnastkowy kod tego koloru?

A. 98 FE 98
B. A0 FB A0
C. A0 FE A0
D. 98 FB 98
Prawidłowa odpowiedź to RGB(152, 251, 152) zapisane w systemie szesnastkowym jako 98 FB 98. To nie jest przypadkowe – konwersja formatu RGB na HEX polega na przekształceniu każdej ze składowych (czerwony, zielony, niebieski) na odpowiadającą wartość heksadecymalną. W tym przypadku: 152 to 98 w systemie szesnastkowym, 251 to FB, a 152 znowu 98. W praktyce, takie zapisy są absolutną podstawą przy projektowaniu stron internetowych, stylów CSS albo aplikacji mobilnych, gdzie kolory opisuje się właśnie kodami HEX. Moim zdaniem, każdy kto chce działać w grafice komputerowej albo frontendzie, powinien mieć ten mechanizm w jednym palcu. Warto wiedzieć, że standardy W3C przewidują właśnie taki sposób zapisu i przyjmują zarówno notację z #, jak i bez spacji, czyli #98FB98. Często spotkasz ten format np. w plikach stylów LESS, SASS czy nawet podczas korzystania z generatorów palet. Sam nieraz miałem sytuację, że szybka konwersja RGB na HEX ratowała projekt, bo klient przesłał kolory tylko w jednym systemie. Dobrą praktyką jest też zawsze sprawdzać, czy konwersja nie zniekształciła zamierzonego koloru – niektóre programy graficzne lub biblioteki mogą dokonywać zaokrągleń, co minimalnie wpływa na odcień. Warto więc nie tylko ufać narzędziom, ale rozumieć manualnie, jak się to liczy. No, i to co ciekawe – Pale Green jest kolorem dość uniwersalnym, często spotykanym w projektowaniu UI, bo jest delikatny i nie męczy wzroku. Szczerze polecam pobawić się konwersją różnych kolorów, bo to po prostu się przydaje.

Pytanie 6

Jaką funkcję pełnią mechanizmy ciasteczek w aplikacjach internetowych?

A. Do zapisywania danych użytkownika na serwerze
B. Do przechowywania informacji w bazie danych
C. Do generowania dynamicznych interfejsów dla użytkowników
D. Do zapisywania danych użytkownika w przeglądarce
Mechanizm ciasteczek (cookies) w aplikacjach webowych służy do przechowywania danych użytkownika bezpośrednio w przeglądarce. Ciasteczka mogą przechowywać różnego rodzaju informacje, takie jak preferencje językowe, identyfikatory sesji czy dane logowania, co pozwala na personalizację doświadczenia użytkownika oraz śledzenie jego aktywności na stronie. Dzięki ciasteczkom aplikacje webowe mogą zapamiętać użytkownika i dostosować treści do jego potrzeb przy kolejnych wizytach. Cookies są nieodłącznym elementem zarządzania stanem w aplikacjach stateless, takich jak te oparte na protokole HTTP. Mogą być one również wykorzystywane w systemach reklamowych i analitycznych do monitorowania zachowań użytkowników. Prawidłowe zarządzanie ciasteczkami i stosowanie odpowiednich polityk prywatności są kluczowe dla zgodności z przepisami RODO oraz regulacjami dotyczącymi ochrony danych osobowych.

Pytanie 7

Kod XAML zaprezentowany powyżej zostanie wyświetlony jako:

Ilustracja do pytania
A. A
B. D
C. B
D. C
Wybrałeś dokładnie taką odpowiedź, jaką powinien wskazać każdy, kto dobrze rozumie XAML i układ StackLayout. Zobacz, co tu się dzieje: dwa pola Entry wyświetlają się jedno pod drugim, co daje klasyczną strukturę formularza – najpierw pole "Imię", potem "Nazwisko". Dalej mamy StackLayout z orientacją poziomą (Horizontal), więc etykieta "Zgoda RODO" oraz przełącznik Switch pojawiają się obok siebie – to bardzo typowy sposób na prezentację zgody na coś w aplikacjach, bo nie ma sensu rozdzielać tego na dwie linie. Po nich pojawia się Slider z ustawionym Value na 0.5 i kolorami MinimumTrackColor oraz MaximumTrackColor, czyli dokładnie tak jak widać na obrazku – jeden kolor po lewej, drugi po prawej i kółko pośrodku. Na końcu jest Button "Zapisz". Moim zdaniem, taki układ to wręcz klasyka budowy prostych formularzy w aplikacjach mobilnych opartych na XAML. Swoją drogą, to świetny przykład, jak StackLayout pozwala na szybkie i czytelne układanie elementów na ekranie, bez zbędnego komplikowania interfejsu. W praktyce warto jeszcze pamiętać, że oddzielenie pól Entry podnosi czytelność, a stosowanie układów poziomych sprawdza się wtedy, gdy chcesz, żeby użytkownik od razu widział etykietę i jej kontrolkę. Widać tu też dbałość o kolory i spójność wizualną. Według mnie, warto od razu testować takie formularze na różnych urządzeniach, bo StackLayout zachowuje się przewidywalnie, ale warto mieć na uwadze responsywność – no i nie zapomnij, że Slider i Switch mają swoje domyślne wartości, które można łatwo sterować z kodu.

Pytanie 8

Jaką wartość przyjmie etykieta label po wykonaniu poniższego kodu, gdy zostanie on uruchomiony po naciśnięciu przycisku w aplikacji?

private void Button_click(object sender, routedEventArgs e) {
    int tmp = 0;
    for (int i=0; i<=100; i+=2) {
        tmp += i;
    }
    label.Content = tmp;
}
A. suma liczb parzystych z przedziału od 0 do 100
B. liczby parzyste z przedziału od 0 do 100
C. liczby z przedziału od 0 do 100
D. suma liczb z przedziału od 0 do 100
Kod, który został podany w pytaniu, wykorzystuje pętlę for do obliczenia sumy wszystkich liczb parzystych z przedziału od 0 do 100 włącznie. Zmienna tmp pełni tutaj rolę akumulatora, który z każdą iteracją powiększa swoją wartość o kolejną liczbę parzystą. Startujemy od zera, a dzięki i+=2 pętla przechodzi tylko przez liczby parzyste (0, 2, 4, ..., 100). To bardzo typowy sposób, żeby wyliczyć sumę konkretnego zbioru liczb – w tym przypadku parzystych z określonego zakresu. Moim zdaniem warto zauważyć, że takie podejście świetnie sprawdza się w prostych kalkulatorach, prostych analizach danych czy nawet w grach, gdzie czasem trzeba sumować tylko wybrane wartości. W praktyce, szczególnie w większych projektach, lepiej opakować takie operacje w osobne metody lub korzystać np. z funkcji agregujących LINQ w C#. Ale zasada jest ta sama – najpierw określamy, co konkretnie chcemy sumować (tutaj: liczby parzyste), a potem realizujemy to w pętli. Ten fragment kodu jest też niezłym przykładem, jak optymalnie można przechodzić przez dane, jeśli nie musimy analizować wszystkich możliwych wartości (tutaj: wystarczy co drugi krok). Takie sumowanie przydaje się w pracy z raportami, zestawieniami i w miejscach, gdzie liczy się wydajność przetwarzania danych.

Pytanie 9

Reguła zaangażowania i konsekwencji jako jedna z zasad wpływania na innych odnosi się

A. do odwzajemniania się osobie, która nam pomogła
B. do doprowadzania spraw do końca
C. do uległości wobec autorytetów
D. do kierowania się zdaniem danej grupy
Reguła zaangażowania i konsekwencji, o której tu mowa, faktycznie odnosi się do potrzeby doprowadzania spraw do końca. To jedna z podstawowych zasad psychologicznych wykorzystywanych w wpływaniu na decyzje i zachowania ludzi, szczególnie w sprzedaży czy negocjacjach. Kiedy już się na coś zgodzimy lub podejmiemy pierwsze, nawet drobne zobowiązanie, automatycznie pojawia się w nas silna potrzeba zachowania spójności z wcześniejszymi deklaracjami — tak po prostu działa ludzka psychika. Z mojego doświadczenia wynika, że firmy bardzo często to wykorzystują, np. prosząc klienta o drobną przysługę, podpis czy mikroakceptację, bo potem jest większa szansa, że pójdzie za ciosem i zdecyduje się na większy krok. W psychologii społecznej ten mechanizm uznaje się za bardzo skuteczny – zresztą Robert Cialdini w swoich książkach szeroko o tym pisze. Na rynku pracy też to widać, bo pracodawcy chętniej powierzają ważne zadania osobom, które mają zwyczaj kończyć to, co zaczęły. W praktyce, jeśli ktoś raz się w coś zaangażuje — nawet formalnie nie podpisując żadnej umowy — to potem z dużym prawdopodobieństwem wytrwa przy swojej decyzji. Dlatego znajomość tej zasady jest nie tylko teoretycznie ciekawa, ale daje konkretne narzędzia do skuteczniejszego działania w relacjach międzyludzkich, marketingu czy zarządzaniu projektami.

Pytanie 10

Co oznacza skrót CDN w kontekście aplikacji webowych?

A. Cross Domain Navigation - metoda nawigacji między domenami w aplikacjach webowych
B. Content Definition Notation - notacja do definiowania treści w aplikacjach
C. Compressed Data Node - węzeł kompresji danych w architekturze mikrousług
D. Content Delivery Network - sieć rozproszona geograficznie, służąca do dostarczania treści
Skrót CDN oznacza Content Delivery Network, czyli sieć dostarczania treści. Jest to architektura rozproszona geograficznie, która umożliwia efektywne dostarczanie zasobów internetowych, takich jak obrazy, filmy, skrypty czy pliki CSS. CDN składa się z wielu serwerów, które są rozmieszczone w różnych lokalizacjach na całym świecie. Gdy użytkownik próbuje uzyskać dostęp do treści, zapytanie jest kierowane do najbliższego geograficznie serwera w sieci CDN, co znacząco przyspiesza czas ładowania strony oraz zmniejsza obciążenie głównego serwera. Przykłady popularnych usług CDN to Cloudflare, Amazon CloudFront czy Akamai. Zastosowanie CDN ma kluczowe znaczenie dla poprawy wydajności aplikacji webowych, szczególnie w kontekście globalnych użytkowników, gdzie opóźnienia w dostępie do treści mogą wpływać na doświadczenia użytkowników. Ponadto, wykorzystanie sieci CDN może wspierać również optymalizację SEO, ponieważ szybko ładujące się strony są preferowane przez wyszukiwarki. W branży e-commerce, efektywne korzystanie z CDN jest standardem, który pozwala na utrzymanie wysokiej dostępności i wydajności aplikacji, co jest niezbędne dla sukcesu online.

Pytanie 11

Który z wymienionych etapów w procesie przetwarzania instrukcji przez procesor odbywa się jako pierwszy?

A. Zapis wyników do pamięci (Write Back)
B. Rozkodowanie rozkazu (Decode)
C. Realizacja instrukcji (Execution)
D. Pobranie rozkazu z pamięci (Fetch)
Pierwszą rzeczą, jaką robi procesor, jest pobranie rozkazu z pamięci, co nazywamy Fetch. To bardzo ważny etap w budowie komputera. Normalnie cykl wykonywania instrukcji składa się z trzech głównych kroków: pobierania, dekodowania i wykonania. W fazie Fetch procesor dobiera się do pamięci i ściąga instrukcję, którą zaraz wykona. Do tego używa rejestru wskaźnika instrukcji, czyli Instruction Pointer, który pokazuje, gdzie w pamięci jest następna instrukcja. Jak to działa w praktyce? Można to zobaczyć na przykładzie procesora x86, gdzie CPU na początku cyklu sprawdza pamięć RAM, szukając instrukcji według adresu, który podaje wskaźnik. Standardy takie jak ISA (Instruction Set Architecture) mówią, że ten krok to podstawa, bo to właśnie od niego zaczyna się wszystko, co robi procesor.

Pytanie 12

W C++ mechanizm programowania obiektowego, który wykorzystuje funkcje wirtualne (ang. Virtual) i umożliwia programiście pominięcie kontroli klasy pochodnej podczas wywoływania metod, nazywa się

A. polimorfizmem
B. przeciążeniem
C. hermetyzacją
D. dziedziczeniem
Polimorfizm to mechanizm w programowaniu obiektowym, który pozwala na wywoływanie metod na obiektach różnych klas przez wspólny interfejs lub klasę bazową. Dzięki temu programista może pisać bardziej elastyczny i modułowy kod, w którym konkretna implementacja metody jest wybierana w czasie działania programu. Kluczową rolę w polimorfizmie odgrywają funkcje wirtualne (virtual), które umożliwiają nadpisanie metod w klasach dziedziczących. Polimorfizm upraszcza rozbudowę aplikacji i minimalizuje potrzebę wielokrotnego pisania tego samego kodu, co jest istotne w dużych projektach programistycznych. Przykładem jest klasa Figura, która może mieć metody obliczania pola powierzchni, a klasy dziedziczące, takie jak Kolo i Kwadrat, implementują te metody w sposób specyficzny dla swojej geometrii.

Pytanie 13

Zaprezentowane oznaczenie praw Creative Commons umożliwia bezpłatne wykorzystywanie utworu

Ilustracja do pytania
A. w celach komercyjnych
B. pod warunkiem udostępnienia go na takiej samej licencji
C. pod warunkiem zachowania go w pierwotnej formie
D. w celu dokonywania zmian lub remiksowania
Odpowiedź dotycząca możliwości zmiany lub remiksowania utworu jest prawidłowa w kontekście oznaczeń Creative Commons takich jak CC BY lub CC BY-NC. Licencje te umożliwiają korzystanie z utworu w sposób zmieniony czy remiksowany pod warunkiem spełnienia określonych wymogów. CC BY wymaga jedynie przypisania autorstwa, co daje twórcom dużą elastyczność w adaptacji i modyfikacji dzieła, co znajduje zastosowanie w projektach edukacyjnych, artystycznych czy badawczych. Działania takie mogą obejmować tworzenie adaptacji, tłumaczeń, mashupów czy nowych kreatywnych form bazujących na oryginale. CC BY-NC natomiast ogranicza użycie komercyjne, ale nadal zezwala na modyfikacje w niekomercyjnych kontekstach. Remiksowanie muzyki, tworzenie nowych wersji wideo czy projektów graficznych są popularnymi praktykami w społeczności twórców, co promuje innowacje i rozwój kultury open source. Ważne jest, aby użytkownicy byli świadomi warunków licencji i poprawnie przypisywali autorstwo, co nie tylko spełnia wymogi prawne, ale również wspiera etos współpracy i uczciwości w społeczności twórczej. Zaangażowanie w twórczość w oparciu o licencje Creative Commons przyczynia się do propagowania wiedzy i kultury oraz wspiera zrównoważony rozwój społeczności twórczych.

Pytanie 14

Co to jest lazy loading w kontekście aplikacji webowych?

A. Technika przechowywania danych w pamięci podręcznej przeglądarki
B. Metoda kompresji obrazów na stronach internetowych
C. Narzędzie do testowania wydajności ładowania strony
D. Strategia optymalizacji, która opóźnia ładowanie zasobów do momentu, gdy są faktycznie potrzebne
Lazy loading to technika optymalizacji wydajności, która polega na opóźnieniu ładowania zasobów, takich jak obrazy, filmy czy skrypty, do momentu, gdy są one rzeczywiście potrzebne. Dzięki temu zwiększa się szybkość ładowania strony, co jest szczególnie ważne w kontekście doświadczeń użytkowników i SEO. Przykładem zastosowania lazy loading może być strona z długą listą produktów, gdzie obrazy dla produktów znajdujących się poza ekranem są ładowane dopiero, gdy użytkownik przewinie stronę w dół. Praktyka ta nie tylko poprawia czas reakcji strony, lecz także redukuje zużycie pasma, co jest korzystne dla użytkowników na urządzeniach mobilnych. Stosując lazy loading, warto pamiętać o dobrych praktykach, takich jak użycie odpowiednich bibliotek JavaScript, które wspierają tę technikę, oraz zapewnienie odpowiednich fallbacków dla starszych przeglądarek. Wprowadzenie lazy loading jest zgodne z zaleceniami optymalizacji wydajności publikowanymi przez Google, które podkreślają znaczenie ładowania tylko niezbędnych zasobów i poprawę UX.

Pytanie 15

Jakie informacje zawiera dokumentacja realizacji projektu?

A. Strategia marketingowa aplikacji
B. Zestawienie błędów wykrytych w trakcie testów
C. Podręcznik użytkownika dla końcowych odbiorców aplikacji
D. Dane dotyczące faz wdrożenia aplikacji w środowisku produkcyjnym
Dokumentacja wdrożenia projektu zawiera informacje o etapach implementacji aplikacji w środowisku produkcyjnym. Obejmuje ona szczegółowe procedury instalacji, konfiguracji serwerów, zależności systemowych oraz sposób integracji aplikacji z innymi narzędziami. Tego rodzaju dokumentacja jest niezbędna dla zespołów DevOps i administratorów systemów, ponieważ umożliwia płynne przenoszenie aplikacji z etapu testowego do środowiska produkcyjnego. Zawiera również instrukcje dotyczące kopii zapasowych, planów awaryjnych oraz sposobów monitorowania aplikacji po wdrożeniu. Prawidłowo przygotowana dokumentacja wdrożeniowa minimalizuje ryzyko błędów i przyspiesza proces uruchamiania aplikacji na serwerach produkcyjnych.

Pytanie 16

Jaką kategorię reprezentuje typ danych "array"?

A. Typ wskaźników
B. Typ logiczny
C. Typ danych prosty
D. Typ danych złożony
Tablica ('array') jest przykładem złożonego typu danych, który pozwala na przechowywanie wielu wartości tego samego typu pod wspólną nazwą. Każdy element tablicy jest dostępny za pomocą indeksu, co umożliwia szybkie i efektywne operacje na dużych zbiorach danych. Tablice są szeroko wykorzystywane w programowaniu do przechowywania list, macierzy i innych struktur, gdzie konieczne jest przechowywanie dużych ilości danych tego samego rodzaju. Dzięki tablicom można zorganizować dane w sposób uporządkowany, co ułatwia ich przetwarzanie, sortowanie i wyszukiwanie.

Pytanie 17

Który z poniższych kodów realizuje przedstawiony fragment algorytmu?

Ilustracja do pytania
A. Kod 4
B. Kod 1
C. Kod 3
D. Kod 2
Bardzo dobrze wychwycone! Kod 3 idealnie odwzorowuje logikę algorytmu przedstawioną na schemacie blokowym. Pętla while sprawdza warunek y != 100 i dopóki jest spełniony, wykonuje instrukcję y = a + b. Zarówno przebieg pętli, jak i wyjście z niej odpowiadają dokładnie temu, co prezentuje ten diagram blokowy – czyli wykonujemy przypisanie y = a + b, jeśli warunek jest prawdziwy, a gdy przestaje być, wychodzimy z pętli. Takie podejście jest bardzo typowe w programowaniu, nie tylko w szkolnych zadaniach, ale też w praktyce, gdy musimy powtarzać akcję do momentu spełnienia konkretnego warunku. Moim zdaniem, dobrze jest tutaj zauważyć, że pętle while są preferowane, gdy nie znamy z góry liczby powtórzeń, a warunek wejścia ma być sprawdzany przed każdym przebiegiem – to klasyczna konstrukcja w językach takich jak C, Java czy Python. Tego typu algorytmy można spotkać choćby podczas obsługi wejścia użytkownika (np. powtarzaj pytanie, aż użytkownik poda poprawną wartość) albo w sterowaniu urządzeniami, gdy czekamy na określony sygnał wejściowy. Warto też pamiętać, że w profesjonalnym kodzie dobrze jest dbać o czytelność i jednoznaczność takich fragmentów – a ten kod właśnie taki jest. Swoją drogą, czasem warto dodać jeszcze zabezpieczenia, by uniknąć tzw. nieskończonej pętli, ale tutaj, jak widać, intencja jest jasna i zgodna ze standardami branżowymi.

Pytanie 18

Algorytm przedstawiony powyżej może zostać zaimplementowany w języku Java z wykorzystaniem instrukcji:

Ilustracja do pytania
A. try
B. while
C. switch
D. if
Instrukcja 'while' w Javie działa tak, że powtarza blok kodu, aż warunek, który podasz, będzie prawdziwy. To jedna z podstawowych rzeczy w programowaniu i super przydaje się, kiedy nie wiesz z góry, ile razy coś ma się powtórzyć. Na przykład, możesz to wykorzystać, gdy szukasz czegoś w danych albo gdy chcesz, żeby coś wydarzyło się wielokrotnie, jak obsługa kliknięć na stronie.

Pytanie 19

Który z wymienionych aktów prawnych odnosi się do ochrony danych osobowych w krajach Unii Europejskiej?

A. Creative Commons
B. Open Source Initiative
C. DMCA
D. GDPR (RODO)
GDPR (RODO) to akt prawny dotyczący ochrony danych osobowych w Unii Europejskiej. Wprowadza on jednolite zasady przetwarzania danych, zwiększając ochronę prywatności obywateli. RODO daje użytkownikom prawo do dostępu do swoich danych, ich poprawiania, a także żądania ich usunięcia (prawo do bycia zapomnianym). Firmy muszą transparentnie informować o celach przetwarzania danych oraz zapewniać odpowiedni poziom zabezpieczeń. Niezastosowanie się do przepisów RODO skutkuje wysokimi karami finansowymi.

Pytanie 20

Jedną z dolegliwości, która pojawia się u programistów w wyniku długotrwałego korzystania z myszki komputerowej lub klawiatury, objawiającą się bólem, drętwieniem oraz zaburzeniami czucia w rejonie 1-3 palca ręki jest

A. kifoza
B. dyskopatia
C. zespół cieśni kanału nadgarstka
D. zespół suchego oka
Zespół cieśni kanału nadgarstka to jedna z najczęstszych chorób zawodowych wśród osób pracujących przy komputerze, zwłaszcza programistów czy grafików. Objawia się on bólem, drętwieniem oraz czasem nawet zaburzeniami czucia w obrębie pierwszych trzech palców ręki – dokładnie tak, jak opisano w pytaniu. Dzieje się tak dlatego, że nerw pośrodkowy, który przebiega przez wąski kanał w nadgarstku, jest uciskany na skutek długotrwałego powtarzania tych samych ruchów albo nieprawidłowego ułożenia dłoni na myszce czy klawiaturze. Moim zdaniem temat jest mega ważny, bo wiele osób bagatelizuje drobne drętwienia, a potem kończy się to nawet koniecznością zabiegu! W praktyce najlepiej stosować ergonomiczną klawiaturę i myszkę, robić krótkie przerwy co godzinę i ćwiczyć rozluźnianie nadgarstków. W branży IT coraz częściej zwraca się uwagę na profilaktykę tych schorzeń – nawet firmy zapewniają konsultacje z fizjoterapeutą, a niektórzy znajomi mają specjalne podkładki pod nadgarstki. No i jeszcze jedno – ignorowanie objawów może prowadzić do trwałego uszkodzenia nerwu, więc naprawdę warto od razu reagować na pierwsze sygnały. W literaturze branżowej (np. w wytycznych BHP dla programistów) podkreśla się, że ergonomiczne miejsce pracy i właściwe nawyki to klucz, żeby nie nabawić się tej przypadłości. Z mojego doświadczenia, nawet zmiana kąta nachylenia klawiatury potrafi zrobić dużą różnicę.

Pytanie 21

Jaki rodzaj testów można scharakteryzować przedstawionym opisem?

NazwaOpisCzynnościPo teście
Formularz osobowySprawdzenie odpowiedzi formularza na błędy użytkownika1. czy wpisano wszystkie wymagane pola?
2. czy e-mail zawiera znak @?
3. czy nr telefonu zawiera cyfry, zgodnie ze wzorcem?
4. czy jest zgoda na przetwarzanie danych?
Usunąć z bazy danych wpisane podczas testowania osoby
A. testy wydajnościowe
B. testy zgodności
C. testy funkcjonalne
D. testy jednostkowe
Dokładnie o takie testy tutaj chodzi! Testy funkcjonalne skupiają się na sprawdzaniu, czy system realizuje funkcje zgodnie z wymaganiami biznesowymi i oczekiwaniami użytkownika. W tym przypadku chodzi o formularz osobowy, który ma określone zasady walidacji – na przykład obowiązkowe pola, poprawny format e-maila czy numer telefonu zgodny ze wzorcem. Sprawdza się też, czy użytkownik wyraził zgodę na przetwarzanie danych. To wszystko to typowe przypadki testów funkcjonalnych, bo nie interesuje nas tu ani wydajność systemu, ani szczegóły implementacji kodu, tylko efekt w postaci poprawnego działania funkcji z punktu widzenia użytkownika. Moim zdaniem właśnie w takich testach najłatwiej złapać błędy, które są naprawdę uciążliwe dla użytkowników końcowych. Branżowe standardy, takie jak ISTQB, podkreślają, że testy funkcjonalne badają zachowanie systemu na podstawie specyfikacji, a nie sposobu realizacji. Praktyka pokazuje, że nawet proste formularze często zawierają bzdurne błędy (np. nie sprawdza się formatu maila albo nie wymaga zgody RODO), więc takie testy są wręcz niezbędne. Dodatkowo, dobrym zwyczajem jest po takich testach „posprzątać” po sobie dane testowe, żeby nie zaśmiecać bazy – to też jest element dobrze przeprowadzonego testowania funkcjonalnego.

Pytanie 22

Co to jest ORM w kontekście programowania?

A. Operational Reliability Management - zarządzanie niezawodnością operacyjną systemów
B. Object-Relational Mapping - technika konwersji danych między systemami typów w relacyjnych bazach danych
C. Output Rendering Module - moduł renderujący dane wyjściowe w aplikacjach
D. Organized Resource Model - model organizacji zasobów w aplikacjach webowych
Object-Relational Mapping (ORM) to technika programistyczna, która pozwala na konwersję danych pomiędzy obiektami w programowaniu obiektowym a relacyjnymi bazami danych. Dzięki ORM, programiści mogą operować na danych w sposób bardziej naturalny, wykorzystując obiekty i ich właściwości zamiast skomplikowanych zapytań SQL. Przykłady popularnych frameworków ORM to Hibernate dla Javy, Entity Framework dla .NET oraz Django ORM dla Pythona. Te narzędzia upraszczają komunikację z bazą danych, co zwiększa wydajność i ułatwia zarządzanie kodem. Dzięki zastosowaniu ORM, programiści mogą również łatwiej stosować zasady programowania obiektowego oraz wzorce projektowe, co prowadzi do lepszej organizacji kodu i jego łatwiejszej konserwacji. Wspierają one również migracje schematów bazy danych oraz zarządzanie relacjami między obiektami, co jest istotne w kontekście złożonych aplikacji webowych i systemów informatycznych.

Pytanie 23

Co to jest debouncing w JavaScript?

A. Technika ograniczająca częstotliwość wywoływania funkcji poprzez opóźnienie jej wykonania
B. Mechanizm zarządzania pamięcią dla zmiennych globalnych
C. Metoda usuwania zduplikowanych zdarzeń w kodzie
D. Proces optymalizacji kodu JavaScript podczas kompilacji
Debouncing to technika programistyczna stosowana w JavaScript, która ma na celu ograniczenie częstotliwości wywoływania funkcji poprzez wprowadzenie opóźnienia w jej wykonaniu. Zazwyczaj jest wykorzystywana w kontekście zdarzeń, takich jak przewijanie, zmiana rozmiaru okna czy wprowadzanie danych do formularzy. Przykładowo, przy użyciu debouncingu w funkcji, która wykonuje zapytanie do serwera podczas pisania w polu tekstowym, można ustawić opóźnienie, które uniemożliwi wielokrotne wywołanie funkcji przed upływem określonego czasu. Taki zabieg pozwala na zredukowanie liczby niepotrzebnych zapytań, co z kolei zmniejsza obciążenie serwera i poprawia wydajność aplikacji. W praktyce implementacja debouncingu często korzysta z techniki setTimeout, gdzie po każdym wywołaniu funkcji z resetowaniem timera czeka się na ostatnie wywołanie przed wykonaniem funkcji. Dobrym przykładem jest sytuacja, gdy użytkownik wpisuje tekst w polu wyszukiwania: zamiast wysyłać zapytanie za każdym razem, gdy zmienia się jego zawartość, można ustawić debouncing na 300 milisekund, co pozwala na wysłanie zapytania tylko po zakończeniu pisania, gdy użytkownik przestaje wprowadzać dane.

Pytanie 24

Które z wymienionych zastosowań najlepiej definiuje bibliotekę jQuery?

A. Tworzenie interfejsów w programach desktopowych
B. Ułatwienie manipulacji DOM oraz obsługi zdarzeń w JavaScript
C. Projektowanie struktur baz danych
D. Budowanie aplikacji mobilnych
jQuery to popularna biblioteka JavaScript, która ułatwia manipulację DOM (Document Object Model), obsługę zdarzeń oraz wykonywanie animacji na stronach internetowych. Dzięki jQuery programiści mogą znacznie skrócić ilość kodu potrzebnego do realizacji operacji na elementach HTML. Biblioteka ta zapewnia również wygodny sposób na wykonywanie asynchronicznych żądań HTTP (AJAX), co pozwala na dynamiczne pobieranie danych z serwera bez konieczności przeładowywania całej strony. jQuery jest szeroko stosowane w projektach, które wymagają interaktywności oraz lekkich efektów wizualnych. Choć w ostatnich latach jego popularność spadła na rzecz bardziej zaawansowanych frameworków takich jak React czy Angular, jQuery nadal jest cenione za prostotę, wydajność oraz bogaty ekosystem gotowych wtyczek i rozszerzeń.

Pytanie 25

Jaki framework umożliwia tworzenie interaktywnych interfejsów użytkownika w języku TypeScript?

A. Django
B. Angular
C. ASP.NET Core
D. jQuery
Angular to popularny framework oparty na TypeScript, który umożliwia tworzenie dynamicznych i rozbudowanych interfejsów użytkownika. Jest rozwijany przez Google i używany do budowy aplikacji typu Single Page Applications (SPA), które cechują się płynnością działania i interaktywnością. Angular oferuje bogaty ekosystem narzędzi wspierających programistów, takich jak Angular CLI, który pozwala na szybkie generowanie komponentów, serwisów i modułów. Wsparcie dla TypeScript oznacza, że Angular pozwala na wykorzystywanie typów, interfejsów oraz zaawansowanych narzędzi do refaktoryzacji kodu, co przekłada się na większą czytelność i bezpieczeństwo aplikacji. Dzięki modularnej architekturze Angular wspiera tworzenie aplikacji, które są łatwe w utrzymaniu i skalowaniu. Jego dwukierunkowe wiązanie danych (two-way data binding) oraz możliwość dynamicznej aktualizacji widoków czynią go jednym z liderów na rynku frameworków frontendowych.

Pytanie 26

Wynikiem wykonania poniższego fragmentu kodu jest wyświetlenie liczb z zakresu od 2 do 20, które są

for (let number = 2; number <= 20; number++) {
    let check = true;
    for (let test = 2; test < number; test++) {
        if (number % test === 0) {
            check = false;
            break;
        }
    }
    if (check) console.log(number);
}
A. podzielne przez wartość zmiennej test.
B. parzyste.
C. pierwsze.
D. podzielne przez wartość zmiennej check.
Kod wypisuje liczby pierwsze, czyli takie, które mają dokładnie dwa dzielniki: 1 i samą siebie. Liczby pierwsze są podstawą w wielu dziedzinach matematyki i informatyki, szczególnie w kryptografii i algorytmach. Wyszukiwanie liczb pierwszych w danym przedziale to popularne zadanie, które pozwala na lepsze zrozumienie iteracji, pętli i warunków logicznych w programowaniu. Algorytm ten jest również wykorzystywany w optymalizacji algorytmów szyfrowania i generowania kluczy.

Pytanie 27

Który z wymienionych poniżej przykładów ilustruje prawidłowy szkielet zarządzania wyjątkami w języku C++?

A. try { kod } catch { obsługa }
B. try { kod } except { obsługa }
C. try { kod } finally { obsługa }
D. try { kod } handle { obsługa }
Jak to wygląda w C++? Kluczowym elementem jest szkielet z blokami 'try' i 'catch'. W bloku 'try' piszesz kod, który może spowodować błąd, a 'catch' zajmuje się sytuacjami, kiedy coś pójdzie nie tak. Dzięki temu nie musisz się martwić, że program nagle przestanie działać, bo masz kontrolę nad tym, jak reagować w trudnych momentach. Obsługa wyjątków to naprawdę ważna sprawa w programowaniu, bo pomaga wyłapać różne problemy, czy to z danymi, z pamięcią, czy z plikami. Z mojego doświadczenia, to po prostu sprawia, że aplikacje są bardziej stabilne i działa to na korzyść zarówno programisty, jak i użytkownika.

Pytanie 28

Który z poniższych opisów najlepiej charakteryzuje Node.js?

A. Środowisko uruchomieniowe JavaScript poza przeglądarką, używające silnika V8 z Chrome
B. Framework do budowania aplikacji mobilnych przy użyciu JavaScript
C. System zarządzania bazami danych NoSQL
D. Biblioteka do tworzenia interfejsów użytkownika w aplikacjach webowych
Node.js to środowisko uruchomieniowe JavaScript, które działa na serwerze, a nie tylko w przeglądarkach. Jest zbudowane na silniku V8, który jest również używany w przeglądarce Google Chrome. Dzięki temu, Node.js pozwala na wykonywanie kodu JavaScript na serwerze, co otwiera nowe możliwości dla programistów. Aplikacje napisane w Node.js są zazwyczaj asynchroniczne i oparte na zdarzeniach, co sprawia, że są one wydajne i responsywne. Przykłady zastosowania Node.js obejmują tworzenie serwisów webowych, API oraz aplikacji w czasie rzeczywistym, jak czaty czy gry online. Node.js zapewnia również bogaty ekosystem bibliotek i frameworków, takich jak Express.js, co pozwala na szybkie i efektywne tworzenie aplikacji. Zastosowanie standardów, takich jak RESTful API, w połączeniu z architekturą mikroserwisów, jest przykładami dobrych praktyk przy używaniu Node.js w projektach komercyjnych.

Pytanie 29

Jakie kwestie związane z percepcją są uwzględnione w rekomendacjach standardu WCAG 2.0?

A. prezentacji elementów interfejsu użytkownika
B. umożliwienia interakcji między elementami użytkownika za pomocą klawiatury
C. zapewnienia odpowiedniego czasu na zapoznanie się i przetworzenie informacji
D. jasności i dokładności w dostarczonych treściach na stronie
Odpowiedzi odnoszące się do zapewnienia odpowiedniego czasu na zapoznanie się z informacjami, umożliwienia interakcji poprzez klawiaturę czy jasności i dokładności treści są ważne w kontekście dostępności stron, ale nie dotyczą bezpośrednio percepcji według standardu WCAG 2.0. Często zdarza się, że osoby uczące się mylą pojęcia percepcji z innymi zasadami WCAG, na przykład zrozumiałością (understandable) czy funkcjonalnością (operable). Percepcja w WCAG skupia się na tym, jak treści są postrzegane przez zmysły – głównie wzrok i słuch, ale czasem też dotyk, gdy mowa np. o wyświetlaczach brajlowskich. Zapewnienie odpowiedniego czasu i interakcji klawiaturą to typowe wymagania dla użytkowników z ograniczeniami motorycznymi, i chociaż są one bardzo istotne, to WCAG klasyfikuje je w innych kategoriach niż percepcja. Jasność i dokładność treści to cecha istotna dla zrozumiałości, jednak nie gwarantuje, że użytkownik w ogóle tę treść zauważy lub rozpozna – do tego potrzebna jest właśnie prawidłowa prezentacja elementów interfejsu. Tu najczęściej pojawia się błąd myślowy: zakłada się, że jak coś jest napisane jasno, to każdy to zobaczy i zrozumie, ale wielu użytkowników ma problemy z odbiorem samych wizualnych aspektów strony. WCAG 2.0 podkreśla, żeby nie polegać tylko na jednym kanale percepcji, np. kolorze, dźwięku czy obrazie. Dopiero dbałość o prezentację elementów interfejsu – kontrast, czytelność, alternatywy tekstowe – sprawia, że strona jest dostępna percepcyjnie. Warto zapamiętać, że kategorie WCAG są celowo podzielone właśnie w ten sposób, aby każda istotna kwestia była rozpatrywana osobno i nie mieszana z innymi.

Pytanie 30

Która z wymienionych zasad odnosi się do zachowania prywatności w sieci?

A. Przechowywanie haseł w wiadomościach e-mail
B. Publikowanie danych osobowych na otwartych platformach
C. Stosowanie pseudonimów zamiast rzeczywistych imion na mediach społecznościowych
D. Umieszczanie wszystkich zdjęć na platformach społecznościowych
Używanie pseudonimów zamiast prawdziwych imion na portalach społecznościowych jest jedną z podstawowych zasad ochrony prywatności w internecie. Dzięki temu ograniczasz możliwość identyfikacji i śledzenia Twojej aktywności przez osoby trzecie. Pseudonimy minimalizują ryzyko kradzieży tożsamości i redukują ilość danych osobowych dostępnych publicznie. To działanie jest szczególnie ważne dla dzieci i młodzieży, chroniąc ich przed cyberprzemocą i innymi zagrożeniami. W wielu serwisach można także dostosować ustawienia prywatności, ukrywając profil przed osobami spoza listy znajomych.

Pytanie 31

Użycie modyfikatora abstract w definicji metody w klasie wskazuje, że

A. trzeba zaimplementować tę metodę w tej klasie
B. dziedziczenie po tej klasie jest niedozwolone
C. klasy pochodne nie mogą implementować tej metody
D. klasa ta stanowi podstawę dla innych klas
Modyfikator abstract w definicji metody jasno wskazuje, że dana klasa jest przeznaczona do dalszego dziedziczenia i stanowi coś w rodzaju szablonu dla innych klas. W praktyce – jeśli w klasie pojawia się choć jedna metoda abstract, cała klasa musi być także oznaczona jako abstract. To taki sygnał: hej, tej klasy nie da się użyć bezpośrednio, ale możesz po niej dziedziczyć i dopiero tam zaimplementować szczegóły. Moim zdaniem to bardzo wygodne, bo pozwala z góry narzucić kontrakt na klasy pochodne – mają dostarczyć własne wersje abstrakcyjnych metod. W wielu językach obiektowych, jak C# czy Java, stosowanie klas abstrakcyjnych jest powszechną praktyką przy projektowaniu rozbudowanych aplikacji, gdzie ważne jest rozdzielenie ogólnej logiki od szczegółowych implementacji. Daje to sporą elastyczność i chroni przed przypadkowymi błędami, kiedy ktoś próbowałby utworzyć obiekt klasy, która nie ma pełnej funkcjonalności. Często spotyka się to np. przy projektowaniu hierarchii typu Zwierzę → Pies/Kot, gdzie klasa Zwierzę jest abstrakcyjna i zawiera np. metodę abstract WydajDźwięk(). Dzięki temu każde konkretne zwierzę musi zaimplementować własną wersję tej metody, a całość kodu jest czytelniejsza i łatwiej ją rozwijać. Zdecydowanie warto poznać ten mechanizm, bo to fundament nowoczesnego programowania obiektowego i coś, co codziennie przydaje się w pracy programisty.

Pytanie 32

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

A. kod Java
B. obsługa wciśniętego przycisku
C. obsługa przycisku ekranu dotykowego
D. kod XML
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 33

Które narzędzie służy do automatyzacji procesu budowania aplikacji?

A. Jenkins
B. Swagger
C. Postman
D. Figma
Jenkins to jeden z najpopularniejszych narzędzi do automatyzacji procesów budowania aplikacji, znany z integracji ciągłej (Continuous Integration, CI) oraz dostarczania ciągłego (Continuous Delivery, CD). Dzięki swojej elastycznej architekturze oraz bogatej bibliotece wtyczek, Jenkins umożliwia automatyzację wielu zadań związanych z budowaniem, testowaniem i wdrażaniem oprogramowania. W praktyce, z Jenkins można skonfigurować zadania, które uruchamiają skrypty budujące po każdej zmianie w kodzie źródłowym, co pozwala na szybkie wykrywanie błędów i zapewnienie jakości. Dobrą praktyką jest definiowanie pipeline'ów (pipelining), które integrują różne etapy, takie jak budowanie, testowanie i wdrożenie w jeden zautomatyzowany proces. Jenkins wspiera wiele języków programowania i środowisk, a także integruje się z narzędziami do zarządzania wersjami, co czyni go niezastąpionym narzędziem w procesie DevOps.

Pytanie 34

Przedstawione logo praw Creative Commons umożliwia bezpłatne użytkowanie dzieła:

Ilustracja do pytania
A. pod warunkiem udostępnienia go na tej samej zasadzie licencyjnej
B. w działaniach komercyjnych
C. pod warunkiem zachowania go w oryginalnej formie
D. w celu modyfikacji lub remiksowania
Analizując przedstawione odpowiedzi, warto dokładnie zrozumieć, jakie uprawnienia daje licencja Creative Commons BY-NC. Często spotykanym błędem jest przekonanie, że taka licencja automatycznie pozwala na dowolne wykorzystanie dzieła, także komercyjne, albo że wymaga zachowania oryginalnej formy utworu. Tymczasem skrót NC oznacza wyłącznie użycie niekomercyjne – czyli nie można zarabiać na tym materiale ani go wykorzystywać w działaniach, które mogą mieć charakter komercyjny. To wyklucza możliwość legalnego użycia go np. w reklamie, na płatnych szkoleniach czy produktach na sprzedaż, co jest dość istotne w kontekście praw autorskich. Kolejnym często powielanym nieporozumieniem jest założenie, że tego typu licencje zabraniają modyfikacji lub remiksowania – a wręcz przeciwnie, dopuszczają takie działania, jeśli tylko nie narusza się warunków licencji. Ta pomyłka bierze się zapewne z mylenia BY-NC z licencją BY-NC-ND, gdzie „ND” to „NoDerivatives”, czyli zakaz tworzenia utworów zależnych. Z kolei warunek konieczności udostępnienia dzieła na tej samej zasadzie licencyjnej, czyli tzw. CC SA (ShareAlike), tutaj nie występuje – to osobny warunek licencyjny i jeśli nie ma go w oznaczeniu, nie trzeba się nim przejmować. Generalnie mylenie symboli lub nieczytanie oznaczeń powoduje takie nieporozumienia. W branży IT i szeroko pojętej edukacji bardzo często korzysta się z dzieł Creative Commons i znajomość tych niuansów jest wręcz kluczowa dla świadomego, legalnego działania. Jeśli w praktyce nie masz pewności, czy coś wolno – zawsze warto zajrzeć bezpośrednio do opisu licencji na oficjalnej stronie Creative Commons albo skonsultować się z kimś bardziej doświadczonym. To pozwoli uniknąć typowych błędów, które potem mogą się okazać kosztowne, zwłaszcza w projektach publicznych czy komercyjnych.

Pytanie 35

Który wzorzec projektowy jest najlepszy do zarządzania tworzeniem obiektów?

A. Decorator
B. Observer
C. Adapter
D. Factory Method
Wzorzec projektowy Factory Method jest kluczowym rozwiązaniem w kontekście zarządzania tworzeniem obiektów. Jego głównym celem jest oddzielenie procesu tworzenia obiektów od ich używania, co zwiększa elastyczność i łatwość w rozszerzaniu aplikacji. Factory Method pozwala na definiowanie interfejsu do tworzenia obiektów, ale pozostawia decyzję o tym, które klasy instancjonować, pod kontrolą podklas. Dzięki temu można łatwo wprowadzać nowe typy obiektów bez modyfikowania kodu klienckiego. Przykładem zastosowania tego wzorca może być system zarządzania dokumentami, gdzie różne typy dokumentów (np. PDF, DOCX) są tworzone przez różne fabryki, ale użycie tych obiektów odbywa się w jednolity sposób. W praktyce stosowanie wzorca Factory Method wspiera zasady SOLID, w szczególności zasadę otwartego-zamkniętego, co sprzyja utrzymywaniu i rozwijaniu systemu zgodnie z najlepszymi praktykami inżynierii oprogramowania.

Pytanie 36

Zaprezentowany wykres ilustruje wyniki przeprowadzonych testów

Ilustracja do pytania
A. wydajności
B. ochrony
C. użyteczności
D. funkcjonalności
Wykres przedstawia czasy odpowiedzi strony internetowej co jest kluczowe w kontekście testów wydajnościowych. Testy wydajnościowe mają na celu zmierzenie jak system radzi sobie pod określonym obciążeniem i jak szybko potrafi odpowiedzieć na zapytania użytkowników. Tego typu analiza pomaga zidentyfikować potencjalne wąskie gardła w infrastrukturze IT. Przykładowo jeżeli czasy odpowiedzi DNS lub połączenia są zbyt długie może to wskazywać na potrzebę optymalizacji serwerów DNS lub infrastruktury sieciowej. Testy te są nieodłącznym elementem zapewnienia jakości oprogramowania a ich prawidłowe wykonanie wpływa na doświadczenia użytkowników końcowych. Dobra praktyka w branży IT zakłada regularne przeprowadzanie testów wydajnościowych w celu monitorowania stabilności systemu w warunkach zbliżonych do rzeczywistych. Warto również zauważyć że narzędzia takie jak JMeter czy LoadRunner są powszechnie używane do przeprowadzania takich testów co umożliwia symulację różnorodnych scenariuszy obciążenia i analizę wyników w czasie rzeczywistym.

Pytanie 37

Jakie jest zastosowanie iteratora w zbiorach?

A. Do usuwania elementów ze zbioru
B. Do zmiany rodzaju zbioru w trakcie działania aplikacji
C. Do iterowania po elementach zbioru
D. Do generowania kopii zbiorów
Iterator w kolekcjach umożliwia przechodzenie przez elementy kolekcji w określonym porządku. Jest to abstrakcyjny obiekt, który pozwala na iterowanie po różnych strukturach danych, takich jak listy, wektory czy zbiory, bez konieczności znajomości ich wewnętrznej implementacji. Iteratory umożliwiają wykonywanie operacji na elementach kolekcji, takich jak odczyt, modyfikacja lub usuwanie, co czyni je niezwykle użytecznymi w programowaniu obiektowym. Dzięki iteratorom kod staje się bardziej czytelny i mniej podatny na błędy.

Pytanie 38

W jaki sposób można ograniczyć problemy społeczne wynikające z nadmiernego używania internetu?

A. Zwiększać czas spędzany przy ekranie
B. Unikać spotkań z ludźmi w realnym świecie
C. Całkowicie wycofać się z aktywności wirtualnych
D. Zachować równowagę pomiędzy relacjami w sieci a tymi w rzeczywistości
Utrzymywanie równowagi między relacjami online i offline to kluczowy element zapobiegania problemom społecznym wynikającym z nadmiernego korzystania z internetu. Przeplatanie kontaktów wirtualnych z interakcjami twarzą w twarz wzmacnia więzi społeczne i poprawia umiejętności komunikacyjne. Równowaga między życiem cyfrowym a rzeczywistym pozwala unikać izolacji społecznej i wspiera rozwój empatii oraz zdolności interpersonalnych. Jest to szczególnie ważne w kontekście młodzieży, która może być bardziej podatna na negatywne skutki nadmiernej ekspozycji na treści online.

Pytanie 39

Co oznacza akronim IDE w kontekście programowania?

A. Integrated Development Environment
B. Interaktywny Silnik Programistyczny
C. Zintegrowane Środowisko Debugowania
D. Interaktywny Edytor Debugowania
IDE, czyli Zintegrowane Środowisko Programistyczne, to naprawdę przydatne narzędzie. Zajmuje się nie tylko edytowaniem kodu, ale łączy w sobie kompilator, debugger i wiele innych rzeczy, które pomagają w tworzeniu oprogramowania. Dzięki IDE można szybciej pisać programy i lepiej ogarniać projekty. A najpopularniejsze z nich, jak Visual Studio, IntelliJ IDEA czy Eclipse, wspierają różne języki programowania, więc są bardzo uniwersalne. Moim zdaniem, korzystanie z IDE to prawie obowiązek dla każdego programisty!

Pytanie 40

Programista tworzy system zarządzania buforem drukowania dokumentów. Najnowsze zlecenie drukowania dodawane jest na koniec kolejki, a najstarsze z nich są przekazywane do drukarki. Jaką strukturę danych najłatwiej zastosować w tej sytuacji?

A. FIFO
B. Sterta
C. Stos
D. LIFO
FIFO (First In, First Out) to struktura danych idealnie pasująca do implementacji kolejki wydruku, gdzie zadania są przetwarzane w kolejności ich zgłoszenia. Najstarsze zadanie (pierwsze dodane) jest przetwarzane jako pierwsze, co odwzorowuje rzeczywisty sposób działania kolejek drukowania. FIFO znajduje szerokie zastosowanie w wielu dziedzinach informatyki, takich jak programowanie systemów operacyjnych, zarządzanie buforami oraz implementacja kolejek sieciowych. Dzięki temu zadania są obsługiwane w przewidywalnej kolejności, co jest kluczowe dla zachowania porządku i efektywności przetwarzania.