Wyniki egzaminu

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

Egzamin niezdany

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

Wymagane minimum: 20 punktów (50%)

Udostępnij swój wynik
Szczegółowe wyniki:
Pytanie 1

Jaką strukturę danych obrazuje zamieszczony kod w języku C#?

int[,] array = new int[3, 3];
A. tablicę dwuwymiarową
B. stos
C. tablicę jednowymiarową
D. listę

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Kod, który widzisz, tworzy tablicę dwuwymiarową w języku C#. Zapis int[,] array = new int[3, 3]; oznacza, że deklarujesz strukturę, gdzie każdy element jest dostępny przez dwa indeksy – pierwszy wskazuje wiersz, drugi kolumnę. Tablice dwuwymiarowe są bardzo popularne przy przechowywaniu macierzy, plansz w grach (na przykład szachownicy czy sudoku), a nawet obrazów, gdzie każdy piksel opisuje się przez współrzędne. Moim zdaniem, znajomość takich struktur naprawdę ułatwia tworzenie bardziej złożonych algorytmów, bo niekiedy dostępu do danych nie da się zamknąć w jednej linii, tylko trzeba się poruszać w dwóch wymiarach. Jeżeli chodzi o dobre praktyki, to warto pamiętać, że tablica dwuwymiarowa w .NET jest strukturą "prostokątną", czyli każdy wiersz ma tyle samo kolumn – coś jak klasyczna tabela w Excelu. To różni się od tzw. tablic tablic (ang. jagged arrays), które pozwalają mieć nierówną liczbę elementów w wierszach, ale to już trochę inna bajka. W twoim przykładzie stworzyłeś tablicę o rozmiarze 3x3, czyli 9 elementów, do których odwołujesz się za pomocą array[wiersz, kolumna]. Może się to wydawać proste, ale z mojego doświadczenia to właśnie takie zrozumienie podstawowych konstrukcji pozwala pisać czytelny i wydajny kod. W branży często spotyka się sytuacje, gdzie optymalizacja działania na tablicach – zwłaszcza tych dwuwymiarowych – robi różnicę, więc warto to mieć dobrze opanowane.

Pytanie 2

Aplikacje funkcjonujące w systemach Android do komunikacji z użytkownikiem wykorzystują klasę

A. Activity
B. Screens
C. Windows
D. Fragments

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
W systemie Android klasa Activity to absolutna podstawa komunikacji aplikacji z użytkownikiem. To właśnie ona reprezentuje jeden ekran interfejsu użytkownika, coś w stylu okna dialogowego w klasycznych aplikacjach desktopowych. Cały cykl życia aplikacji, obsługa zdarzeń, wyświetlanie elementów graficznych czy reagowanie na akcje użytkownika – wszystko to ogarnia Activity. Bez niej praktycznie żadna aplikacja nie ruszy, bo to właśnie Activity zarządza np. wywołaniem widoku, obsługą kliknięć czy przekazywaniem danych pomiędzy różnymi ekranami. Moim zdaniem, jeśli ktoś chce programować na Androida, najpierw powinien dobrze przyswoić, jak działa Activity i jej cykl życia (onCreate, onStart itd.), bo to pozwala tworzyć aplikacje zgodne z założeniami platformy. W praktyce deweloperzy bardzo często korzystają z dziedziczenia po klasie Activity, aby rozszerzyć funkcjonalność swoich aplikacji, a także używają jej do uruchamiania nowych ekranów oraz zarządzania nawigacją. Warto jeszcze pamiętać, że dobra znajomość Activity pomaga unikać typowych problemów z zarządzaniem pamięcią czy nieprawidłowym obsługiwaniem powrotów do aplikacji po przerwie. Z mojego doświadczenia, zrozumienie działania Activity to taka baza, bez której trudno iść dalej w temacie Androida.

Pytanie 3

W przypadku przedstawionego fragmentu kodu Java, wyjątek zostanie zgłoszony, gdy wartość zmiennej index wyniesie:

try {
    int[] liczby = {1, 2, 3, 4, 5, 6};
    System.out.println(liczby[index]);
}
catch (Exception e) {
    System.out.println("wystąpił błąd.");
}
A. 5
B. 7
C. 0
D. 1

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
W podanym kodzie Java mamy do czynienia z tablicą o nazwie liczby zawierającą sześć elementów: {1 2 3 4 5 6}. Indeksy tablicy w Javie zaczynają się od 0 a kończą na n-1 gdzie n to długość tablicy. W tym przypadku tablica ma długość 6 a więc jej indeksy to 0 1 2 3 4 i 5. Kiedy próbujemy uzyskać dostęp do elementu tablicy za pomocą indeksu równego długości tablicy lub większego np. 6 w tym przypadku otrzymujemy wyjątek ArrayIndexOutOfBoundsException. Jest to standardowe zachowanie w języku Java mające na celu ochronę przed błędami związanymi z nieprawidłowym dostępem do pamięci. Tego rodzaju błędy mogą prowadzić do nieprzewidywalnych zachowań programów dlatego obsługa takich wyjątków jest dobrą praktyką programistyczną. Kod zawiera blok try-catch który przechwytuje wszelkie wyjątki w tym przypadku i drukuje komunikat aby poinformować użytkownika o błędzie. Takie podejście jest zgodne z zasadami bezpiecznego programowania oraz ułatwia debugging i zarządzanie błędami w aplikacjach produkcyjnych.

Pytanie 4

Wartość liczby 1AF, zapisana w systemie szesnastkowym, po przeliczeniu na system dziesiętny wynosi

A. 6890
B. 257
C. 26
D. 431

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Słuchaj, liczba szesnastkowa 1AF to w systemie dziesiętnym 431. Przeliczenie robimy tak: (1 * 16^2) + (10 * 16^1) + (15 * 16^0). To jest jedna z podstawowych rzeczy, które musisz znać przy konwersji liczb. Szczególnie przydaje się to w programowaniu i ogólnie w informatyce, gdzie często mamy do czynienia z różnymi systemami liczbowymi.

Pytanie 5

Jakie składniki powinien mieć plan projektu?

A. Wyłącznie etapy projektu
B. Terminy i zasoby ludzkie
C. Etapy projektu, ramy czasowe, zasoby i zadania
D. Tylko czas wykonania i budżet

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Harmonogram projektu powinien zawierać etapy projektu, ramy czasowe, zasoby oraz zadania. Taka kompleksowa struktura umożliwia skuteczne zarządzanie projektem i pozwala na śledzenie postępów. Każdy etap harmonogramu powinien być dokładnie opisany, a zadania powinny być przypisane do odpowiednich członków zespołu. Uwzględnienie zasobów i ram czasowych pozwala na precyzyjne planowanie i minimalizuje ryzyko opóźnień. Harmonogram stanowi nieodłączny element projektów zarządzanych zarówno w modelu Waterfall, jak i Agile, dostarczając przejrzystość na każdym etapie realizacji.

Pytanie 6

W języku C# szablon List zapewnia funkcjonalność listy. Z tworzenia obiektu typu List wynika, że jego składnikami są:

List<int> wykaz = new List<int>();
A. liczby rzeczywiste
B. elementy typu List
C. liczby całkowite
D. elementy o nieokreślonym typie

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Szablon List<int> w języku C# implementuje listę, której elementami są liczby całkowite. Jest to przykład zastosowania kolekcji generycznych, które wprowadzają typowanie silne w czasie kompilacji, co pozwala na uniknięcie błędów typowych dla kolekcji niegenerycznych. Definiując List<int> deklarujesz, że lista będzie przechowywać tylko liczby całkowite. Dzięki temu kompilator może wykrywać błędy związane z typowaniem już podczas pisania kodu, co zwiększa jego niezawodność i bezpieczeństwo. Typ generyczny T w List<T> umożliwia tworzenie kolekcji przechowujących dowolny typ, co ułatwia ponowne wykorzystanie kodu i zgodność z zasadą DRY (Don't Repeat Yourself). W praktyce List<int> jest szeroko stosowany w scenariuszach wymagających dynamicznie rozwijanych kolekcji, które nie ograniczają się do statycznej liczby elementów, takich jak tablice. Listy generyczne są wydajniejsze i bardziej elastyczne dzięki metodom takim jak Add, Remove czy Contains, które operują na elementach określonego typu. Dzięki implementacji IEnumerable/Listy są również zgodne z LINQ, co umożliwia stosowanie złożonych zapytań i operacji na danych, takich jak filtrowanie i sortowanie, w sposób czytelny i efektywny.

Pytanie 7

Co to jest GraphQL?

A. Format danych podobny do JSON używany w komunikacji między aplikacjami
B. Biblioteka do tworzenia grafów i diagramów w aplikacjach webowych
C. System zarządzania bazami grafowymi
D. Język zapytań do API oraz środowisko wykonawcze do obsługi tych zapytań

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
GraphQL to innowacyjny język zapytań do API oraz środowisko wykonawcze, które umożliwia efektywne i elastyczne pobieranie oraz manipulowanie danymi. W przeciwieństwie do tradycyjnych API REST, gdzie każde zapytanie zwraca predefiniowany zbiór danych, GraphQL pozwala klientowi na zdefiniowanie dokładnie tego, co chce otrzymać. Oznacza to, że aplikacja może uniknąć nadmiarowych danych lub wielokrotnych zapytań do serwera. Przykładowo, w aplikacji mobilnej, która wyświetla profil użytkownika, możemy za pomocą jednego zapytania uzyskać wszystkie potrzebne informacje, takie jak imię, nazwisko, zdjęcie oraz listę znajomych, zamiast wysyłać osobne zapytania dla każdego z tych elementów. Tego rodzaju elastyczność jest kluczowa w skalowalnych architekturach, gdzie różne klienci mogą potrzebować różnych zbiorów danych. GraphQL promuje również dobre praktyki w zakresie wersjonowania API, umożliwiając jego rozwój bez wprowadzania niekompatybilnych zmian dla bieżących klientów.

Pytanie 8

Jaką wartość zwróci funkcja napisana w języku C++, jeżeli jej argumentem wejściowym jest tablica stworzona w następujący sposób:

int tablica[6] = {3,4,2,4,10,0};

int fun1(int tab[]) {
    int wynik = 0;

    for(int i = 0; i < 6; i++)
        wynik += tab[i];
    return wynik;
}
A. 0
B. 20
C. 23
D. 10

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Rozwiązując takie zadania, warto nauczyć się dokładnie patrzeć na strukturę kodu. Funkcja fun1 przyjmuje tablicę intów i sumuje jej elementy. Tu pętla for przechodzi po wszystkich sześciu indeksach – od 0 do 5. Gdy podmienisz na liczby z zadania: 3, 4, 2, 4, 10 oraz 0 – po prostu dodajesz te wartości do siebie. Suma wychodzi 23. Czyli wynik funkcji to właśnie 23. To taki bardzo typowy przykład sumowania elementów tablicy – nie tylko na lekcjach, ale praktycznie wszędzie, np. jak liczysz sumę zamówień w sklepie internetowym albo punkty gracza w grze. Jeśli chodzi o dobre praktyki w C++, to warto wiedzieć, że lepiej przekazywać tablicę z dodatkowym parametrem długości, żeby nie robić magicznych liczb jak to '6' w pętli – można się wtedy łatwo pomylić przy zmianie rozmiaru. Moim zdaniem dobrze jest od razu przyswoić sobie nawyk wykorzystywania std::vector zamiast „gołych” tablic, bo są bezpieczniejsze i elastyczniejsze. To już taki krok w stronę kodu produkcyjnego. Ale podsumowując – jeśli widzisz tak napisany kod, to zawsze patrz, ile razy pętla się wykona i jakie są wartości w tablicy. Tylko tyle i aż tyle. W praktyce ta umiejętność przekłada się na szybkie debugowanie i pisanie niezawodnych programów.

Pytanie 9

W jednostce centralnej, za obliczenia na liczbach zmiennoprzecinkowych odpowiada

A. FPU
B. AU
C. IU
D. ALU

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
FPU, czyli Floating Point Unit, to specjalizowany układ w jednostce centralnej, który zajmuje się właśnie obliczeniami na liczbach zmiennoprzecinkowych. Moim zdaniem bardzo często się o tym zapomina, bo „procesor to procesor”, a tu jednak mamy konkretne podzespoły odpowiadające za różne rodzaje operacji. Współczesne CPU praktycznie zawsze mają wbudowaną FPU, bo operacje na zmiennych typu float czy double są na porządku dziennym, szczególnie w grafice komputerowej, symulacjach fizycznych czy obliczeniach naukowych. Przykładowo, FPU jest niezbędna podczas renderowania grafiki 3D albo nawet przy zwykłych obliczeniach matematycznych, które wymagają dużej precyzji. Standardy branżowe jak IEEE 754 określają sposób reprezentacji i przetwarzania liczb zmiennoprzecinkowych, a FPU jest zaprojektowana właśnie pod takie standardy, żeby wyniki były przewidywalne i zgodne ze światowymi normami. Dla mnie to jest ciekawe, bo chociaż FPU działa raczej „w tle”, to bez niej większość zaawansowanych aplikacji praktycznie by nie działała albo byłaby po prostu niewyobrażalnie wolna. Czasem w kontekście architektury komputerów mówi się nawet o osobnych układach FPU, które kiedyś były dokładane do procesorów, zanim trafiły bezpośrednio do ich wnętrza. Warto o tym pamiętać, bo to właśnie FPU pozwala komputerom liczyć z dużą dokładnością i szybkością wartości, których zwykła ALU by nie ogarnęła.

Pytanie 10

Jaką strukturę danych można zrealizować, korzystając jedynie z wymienionych metod?

push(arg) – dodaje element
pop() – usuwa ostatnio dodany element
peek() – zwraca ostatnio dodany element bez usuwania
isEmpty() – sprawdza czy istnieją dane w strukturze
A. stos
B. drzewo binarne
C. kolejka FIFO
D. tablica

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Zestaw metod przedstawionych w pytaniu – czyli push, pop, peek oraz isEmpty – jednoznacznie wskazuje na strukturę danych zwaną stos (stack). To jest taki bardzo charakterystyczny „magazyn”, gdzie zawsze mamy do czynienia z zasadą LIFO, czyli Last In, First Out. Oznacza to, że ostatni element, który dodaliśmy metodą push, będzie tym pierwszym, który usuniemy przez pop. Peek natomiast pozwala tylko podejrzeć, co jest na górze stosu, ale niczego nie usuwa. isEmpty z kolei daje nam szybki sposób sprawdzenia, czy na stosie w ogóle coś jeszcze zostało. W praktyce, stosy są niezbędne w wielu algorytmach i strukturach programistycznych – na przykład podczas wywołań rekurencyjnych funkcji (sam system operacyjny używa stosu do obsługi wywołań procedur), przy obsłudze nawiasów w kompilatorach czy podczas implementacji algorytmu DFS (Depth-First Search) w grafach. Moim zdaniem, nawet jeśli na początku wydaje się, że stos nie jest tak „potężny” jak inne struktury, to jego prostota jest właśnie największym atutem i dlatego jest tak często wykorzystywany w praktyce. Branżowe standardy, na przykład w językach takich jak Java czy C#, bezpośrednio udostępniają gotowe klasy Stack, które właśnie implementują dokładnie te metody – to pokazuje, jak fundamentalna jest ta struktura. Pewnie warto też pamiętać, że stosy mają swoje ograniczenia (np. nie nadadzą się do kolejkowania zadań), ale tam gdzie trzeba działać LIFO, są niezastąpione.

Pytanie 11

Jaki jest podstawowy cel przystosowania aplikacji do publikacji w sklepie mobilnym?

A. Dostosowanie kodu aplikacji w celu zwiększenia jej wydajności
B. Dostosowanie aplikacji do wymogów platformy oraz regulacji sklepu
C. Zmniejszenie rozmiaru aplikacji poniżej 10 MB
D. Zapewnienie, że aplikacja działa jedynie w trybie offline

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Dostosowanie aplikacji do wymagań platformy i przepisów sklepu mobilnego (np. Google Play lub App Store) to kluczowy krok w procesie publikacji aplikacji. Sklepy mobilne wymagają, aby aplikacje spełniały określone standardy dotyczące bezpieczeństwa, dostępności, wydajności oraz zgodności z wytycznymi interfejsu użytkownika. Proces ten obejmuje testowanie aplikacji pod kątem stabilności, optymalizację grafik i ikon, a także dostosowanie opisów i metadanych aplikacji, co zwiększa jej widoczność i atrakcyjność dla użytkowników. Przestrzeganie wytycznych App Store lub Google Play jest niezbędne, aby aplikacja mogła zostać zatwierdzona i udostępniona do pobrania.

Pytanie 12

Celem zastosowania wzorca Obserwator w tworzeniu aplikacji WEB jest:

A. zarządzanie funkcjami synchronicznymi w kodzie aplikacji
B. monitorowanie działań użytkownika oraz generowanie wyjątków
C. dostosowanie interfejsu użytkownika do różnych kategorii użytkowników
D. informowanie obiektów o modyfikacji stanu innych obiektów

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Wzorzec projektowy Obserwator (ang. Observer) to jeden z klasyków ze świata programowania obiektowego i frontendu. Główna jego rola polega na tym, by pozwalać obiektom (obserwatorom) reagować na zmiany stanu innych obiektów (podmiotów) bez sztywnego powiązania tych klas ze sobą. W praktyce, w aplikacjach webowych bardzo często wykorzystuje się ten wzorzec w architekturach typu MVC czy MVVM, gdzie widoki muszą się automatycznie aktualizować po zmianie modelu danych. Przykład: w Reactcie używasz hooka useState lub useEffect – i Twoje komponenty „obserwują” stan aplikacji. Gdy stan się zmienia, komponenty same się przebudowują, a Ty nie musisz ręcznie wywoływać każdej aktualizacji. Podobnie działa np. EventEmitter w Node.js, Redux z subskrypcjami store czy nawet WebSockety, gdzie klient „słucha” na zmiany po stronie serwera. Dzięki temu komunikacja pomiędzy różnymi częściami systemu staje się luźno powiązana, co ułatwia utrzymanie i rozbudowę kodu. Moim zdaniem bez zrozumienia tego wzorca trudno ogarnąć nowoczesny frontend, bo większość bibliotek UI gdzieś pod spodem go wykorzystuje. Przy okazji: Observer to wzorzec zalecany przez GOF (Gang of Four), więc to nie jest tylko „fajna technika”, ale sprawdzony standard branżowy. Warto wiedzieć, że podejście to minimalizuje ryzyko błędów w synchronizacji danych i pozwala naturalnie reagować na zmiany bez pisania stosów callbacków. To spora oszczędność czasu i kodu.

Pytanie 13

Która z poniższych metod nie należy do cyklu życia komponentu w React.js?

A. componentDidMount()
B. componentDidUpdate()
C. componentWillUnmount()
D. componentWillPublish()

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Metoda componentWillPublish() nie jest częścią cyklu życia komponentu w React.js, co czyni ją poprawną odpowiedzią na to pytanie. W React.js istnieje szereg zdefiniowanych metod cyklu życia, które umożliwiają programistom zarządzanie stanem komponentów w określonych momentach ich istnienia. Do najbardziej istotnych z nich należą: componentDidMount(), componentDidUpdate() oraz componentWillUnmount(). Metoda componentDidMount() jest wywoływana po zamontowaniu komponentu w DOM, co pozwala na inicjalizację danych, takich jak pobieranie danych z API. Z kolei componentDidUpdate() jest wywoływana, gdy komponent zostaje zaktualizowany, co jest doskonałym momentem na reagowanie na zmiany w stanie lub propach. Metoda componentWillUnmount() jest wywoływana tuż przed odmontowaniem komponentu, co jest przydatne do czyszczenia zasobów, takich jak anulowanie subskrypcji lub usuwanie nasłuchiwaczy. Zrozumienie tych metod jest kluczowe dla efektywnego zarządzania cyklem życia komponentów w aplikacjach React, co prowadzi do lepszej wydajności i utrzymania kodu.

Pytanie 14

W jakiej sytuacji kolekcja typu lista okaże się bardziej wydajna niż tablica?

A. Gdy mamy pewność co do dokładnego rozmiaru kolekcji przed kompilacją
B. Gdy liczba elementów w kolekcji jest niezmienna
C. Gdy liczba elementów w kolekcji zmienia się dynamicznie
D. Gdy chcemy uzyskać dostęp do elementów przy pomocy indeksu

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Lista to dynamiczna struktura danych, która pozwala na efektywne dodawanie i usuwanie elementów, zwłaszcza gdy liczba elementów zmienia się w trakcie działania programu. Listy są bardziej elastyczne niż tablice, ponieważ mogą dynamicznie dostosowywać swoją wielkość bez potrzeby alokacji dodatkowej pamięci. W przypadku dynamicznych operacji, takich jak częste wstawianie i usuwanie elementów, listy są znacznie bardziej wydajne niż tablice, które wymagają przesunięcia wszystkich elementów po każdej operacji. Listy świetnie sprawdzają się w implementacji kolejek, stosów oraz w strukturach, które muszą rosnąć i kurczyć się podczas działania aplikacji.

Pytanie 15

Przedstawiony na filmie kod napisany w języku C++ nie kompiluje się. Co należy zmienić w tym kodzie, aby proces kompilacji wykonał się bez błędów?

A. naprawić błąd w funkcji sprawdz, który polega na braku nawiasów {} w pętli for
B. zadeklarować zmienną sprawdz przed jej wykorzystaniem w linii 11
C. dodać deklarację funkcji sprawdz przed funkcją main
D. poprawnie zapisać warunek w instrukcji if w linii 11, np. sprawdz(x)==true

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Odpowiedź jest trafna, bo w języku C++ kompilator musi wiedzieć o istnieniu funkcji zanim zostanie ona użyta w kodzie, np. w funkcji main. Bez wcześniejszej deklaracji, kompilator nie zna sygnatury funkcji i nie potrafi zweryfikować wywołania, co skutkuje błędem typu 'implicit declaration of function'. Deklaracja funkcji to taki sygnał informujący kompilator „hej, taka funkcja będzie i będzie przyjmować takie argumenty, a zwracać taki typ”. Praktycznie rzecz biorąc, przed funkcją main wystarczy wpisać np. 'bool sprawdz(int x);', żeby wszystko grało. To szczególnie ważne przy większych projektach czy pracy w zespołach, gdzie pliki nagłówkowe z deklaracjami funkcji są standardem. Pozwala to na lepszą czytelność i porządek w kodzie – kompilator wie, czego się spodziewać, a Ty unikasz dziwnych, trudnych do znalezienia błędów. Moim zdaniem taka organizacja kodu to podstawa, szczególnie jeśli kiedyś będziesz korzystać z bibliotek lub cudzych funkcji – deklaracje są wtedy wręcz obowiązkowe. To zasada, której trzyma się większość zespołów programistycznych i, szczerze mówiąc, sam kilka razy w młodości zapomniałem o deklaracji, przez co debugowanie trwało wieki. Warto od razu wyrobić sobie taki nawyk, bo to oszczędza sporo nerwów i czasu, a kod staje się solidniejszy i bardziej profesjonalny.

Pytanie 16

Co to jest shadow DOM?

A. Metoda renderowania grafiki 3D w przeglądarkach
B. Wirtualny DOM używany przez biblioteki jak React i Vue.js
C. Mechanizm enkapsulacji kodu HTML, CSS i JavaScript w komponenty webowe
D. Technika stylizacji elementów w CSS przy użyciu cieni

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Shadow DOM to technika pozwalająca na enkapsulację kodu HTML, CSS oraz JavaScript w komponentach webowych, co jest kluczowe w kontekście tworzenia aplikacji opartych na Web Components. Dzięki zastosowaniu Shadow DOM, elementy wewnętrzne komponentu są izolowane od reszty dokumentu, co eliminuje problemy z kolizjami nazw klas CSS oraz pozwala na tworzenie bardziej modularnych i wielokrotnego użytku elementów. Przykładem zastosowania Shadow DOM mogą być komponenty interfejsu użytkownika, takie jak przyciski czy karty, które zawierają własne style i logikę, nie wpływając na globalne style strony. To podejście jest wspierane przez standardy W3C i zalecane w projektach, gdzie skala i złożoność aplikacji wymaga wysokiej wydajności i organizacji kodu. Dobrze zaprojektowane komponenty z użyciem Shadow DOM mogą znacznie uprościć rozwój i utrzymanie aplikacji webowych, czyniąc je bardziej responsywnymi i dostosowanymi do różnych środowisk.

Pytanie 17

Który z operatorów w Pythonie umożliwia sprawdzenie, czy dany element należy do listy?

A. in
B. is
C. and
D. ==

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Operator `in` w języku Python służy do sprawdzania, czy element należy do listy, zbioru, krotki lub innego obiektu iterowalnego. Przykład: `if 5 in lista` sprawdza, czy liczba 5 znajduje się w liście. Operator `in` jest niezwykle przydatny w przeszukiwaniu danych, a jego zastosowanie skraca kod i zwiększa jego czytelność. W Pythonie jest on szeroko stosowany do iteracji i filtrowania danych, co czyni go jednym z najbardziej intuicyjnych operatorów języka.

Pytanie 18

Zaprezentowany diagram Gantta odnosi się do projektu IT. Przy założeniu, że każdy członek zespołu dysponuje wystarczającymi umiejętnościami do realizacji każdego z zadań oraz że do każdego zadania można przypisać jedynie jedną osobę, która poświęci na zadanie pełny dzień pracy, to minimalna liczba członków zespołu powinna wynosić:

Ilustracja do pytania
A. 5 osób
B. 2 osoby
C. 1 osobę
D. 4 osoby

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Wybrana odpowiedź jest trafna, bo minimalna liczba członków zespołu wynosi właśnie 2 osoby. W projekcie przedstawionym na diagramie Gantta, kluczowe jest zwrócenie uwagi na to, ile zadań nakłada się w danym tygodniu – a nie łączna liczba zadań. Największe obciążenie zespołu wypada na okresy, gdzie równolegle realizowane są dwa zadania, np. w pierwszym tygodniu są to Projekt aplikacji i Grafika, później w ostatnim tygodniu dwie aplikacje: front-end i back-end. W żadnym momencie nie występuje potrzeba, by więcej niż dwie osoby pracowały równolegle nad różnymi zadaniami. To bardzo praktyczna sytuacja – w realnych projektach IT planuje się obłożenie pracą właśnie przez analizę diagramu Gantta, by nie generować sztucznego przestoju lub nadmiaru ludzi. Moim zdaniem taka optymalizacja zespołu to podstawa w IT, bo pozwala ograniczyć koszty i lepiej zarządzać zasobami. Warto pamiętać, że zgodnie z dobrymi praktykami zarządzania projektami, np. w metodykach PMBOK czy Prince2, zawsze analizuje się ścieżki krytyczne i równoległość zadań, dokładnie w taki sposób, żeby nie dublować niepotrzebnie rąk do pracy. Świetnie, jeśli już na etapie planowania potrafisz to zauważyć i wyciągnąć praktyczne wnioski – to naprawdę przydaje się potem przy rozpisywaniu harmonogramów na czasach rzeczywistych projektów.

Pytanie 19

Która z poniższych technologii jest używana do tworzenia wykresów i animacji w przeglądarce?

A. CSV
B. JSON
C. SVG
D. XML

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Odpowiedź SVG (Scalable Vector Graphics) jest prawidłowa, ponieważ jest to standardowy format grafiki wektorowej, który jest szeroko stosowany do tworzenia dynamicznych wykresów i animacji w przeglądarkach internetowych. SVG pozwala na łatwe skalowanie grafik bez utraty jakości, co czyni go idealnym wyborem do aplikacji internetowych, które muszą wyświetlać wykresy w różnych rozmiarach. Przykłady zastosowania SVG obejmują interaktywne wizualizacje danych, takie jak wykresy liniowe, słupkowe czy kołowe, które można zrealizować przy użyciu biblioteki JavaScript, takiej jak D3.js. Ponadto, SVG jest kompatybilne z CSS i JavaScript, co umożliwia stylizowanie oraz dodawanie interakcji do grafik. Warto również zauważyć, że SVG jest częścią specyfikacji HTML5, co podkreśla jego znaczenie w nowoczesnym tworzeniu stron internetowych. Dobrą praktyką jest także dbanie o dostępność i zapewnianie odpowiednich atrybutów, takich jak 'title' i 'desc', aby poprawić doświadczenie użytkowników niepełnosprawnych.

Pytanie 20

Który z faz cyklu życia projektu wiąże się z identyfikacją wymagań użytkownika?

A. Wdrażanie
B. Etap planowania
C. Analiza
D. Przeprowadzanie testów

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Analiza to etap cyklu życia projektu, podczas którego określane są wymagania użytkownika. W tej fazie zespół projektowy przeprowadza badania, konsultacje i warsztaty, aby zrozumieć potrzeby klienta i użytkowników końcowych. Wynikiem analizy jest szczegółowa specyfikacja funkcjonalna i niefunkcjonalna, która stanowi podstawę do projektowania i implementacji. Prawidłowo przeprowadzona analiza minimalizuje ryzyko nieporozumień oraz zapewnia, że finalny produkt będzie odpowiadał na realne potrzeby użytkowników.

Pytanie 21

Jaką kategorię własności intelektualnej reprezentują znaki towarowe?

A. Prawa pokrewne
B. Autorskie prawa majątkowe
C. Własność przemysłowa
D. Dobra niematerialne

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Znaki towarowe należą do kategorii własności przemysłowej. Ochrona znaków towarowych pozwala firmom na zabezpieczenie ich brandingu, logotypów oraz nazw produktów przed nieuprawnionym wykorzystaniem przez konkurencję. Rejestracja znaku towarowego daje właścicielowi prawo do wyłącznego używania go w celach komercyjnych i przeciwdziałania naruszeniom. Własność przemysłowa obejmuje także patenty, wzory przemysłowe i oznaczenia geograficzne, stanowiąc kluczowy element strategii ochrony marki oraz wartości firmy na rynku międzynarodowym.

Pytanie 22

Jakie narzędzie wspiera tworzenie aplikacji desktopowych?

A. WPF
B. Xamarin
C. Angular
D. Symfony

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
WPF, czyli Windows Presentation Foundation, to narzędzie, które zdecydowanie kojarzy się z aplikacjami desktopowymi na platformie Windows. Pozwala budować nowoczesne, bogate graficznie interfejsy użytkownika, wykorzystując deklaracyjny język XAML oraz logikę programistyczną w C#. Moim zdaniem WPF to nadal bardzo solidny wybór, jeśli chcemy robić rozbudowane aplikacje okienkowe, które muszą korzystać z możliwości systemu operacyjnego, takich jak obsługa plików, drukowanie czy integracja z innymi aplikacjami Windows. Co ciekawe, wielu dużych graczy rynkowych wciąż używa WPF w swoich rozwiązaniach – choćby aplikacje biurowe, narzędzia branżowe do projektowania graficznego, systemy zarządzania produkcją czy rozbudowane panele administracyjne. Osobiście doceniam fakt, że WPF pozwala stosować wzorzec MVVM, co w realnych projektach pomaga utrzymać kod w porządku i łatwo zarządzać złożonymi aplikacjami. No i jeszcze jedno – dzięki bogatej bazie komponentów oraz możliwości stylizacji, z WPF można wycisnąć naprawdę ciekawe UI. Warto też wiedzieć, że choć pojawiły się nowsze technologie (jak WinUI czy .NET MAUI), to w praktyce WPF jest nadal szeroko wspierany i rozwijany. Jeśli ktoś chce zacząć z aplikacjami desktopowymi na Windows, to moim zdaniem WPF to po prostu dobry start.

Pytanie 23

W środowisku do tworzenia aplikacji, gdzie przedstawiono menu, aby usunąć wszystkie pliki tymczasowe oraz wyniki projektu, należy wybrać opcję

Ilustracja do pytania
A. Clean Solution
B. Run Code Analysis on Solution
C. Batch Build
D. Build Solution

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Opcja „Clean Solution” to dokładnie to, czego używa się w Visual Studio lub innych środowiskach IDE, gdy chce się pozbyć wszystkich plików tymczasowych oraz wyników kompilacji powiązanych z bieżącym projektem lub rozwiązaniem. To bardzo praktyczna funkcja – zwłaszcza wtedy, gdy mamy problemy ze zbudowaniem projektu po wprowadzeniu wielu zmian lub gdy różne konfiguracje builda zaczynają się mieszać. Clean Solution usuwa wszystkie foldery bin i obj, co pozwala rozpocząć proces kompilacji od zera, eliminując potencjalne konflikty wynikające ze starych plików. Moim zdaniem warto korzystać z tej opcji regularnie, szczególnie w większych projektach czy zespołach, gdzie często zmieniają się zależności. W branży IT, według dobrych praktyk, „czyszczenie” rozwiązania przed puszczeniem pełnego builda pomaga zredukować liczbę nieprzewidzianych błędów kompilacji. Dla mnie to trochę taki techniczny reset – zanim zaczniesz szukać błędów w kodzie, upewnij się, że budujesz wszystko na świeżo. Zresztą, w dokumentacji Microsoftu też znajdziesz zalecenia, by właśnie Clean Solution stosować do rozwiązywania problemów z nieaktualnymi artefaktami builda. Bez tej funkcji czasem trudno dojść, czemu kompilator się buntuje.

Pytanie 24

Jakie elementy powinny być uwzględnione w scenariuszu testów aplikacji?

A. Zestaw kroków do testowania, oczekiwanych rezultatów oraz warunków początkowych
B. Dokładne wytyczne dotyczące realizacji kodu
C. Dokumentacja techniczna oprogramowania
D. Strategia wdrożenia aplikacji w środowisku produkcyjnym

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Scenariusz testowy aplikacji powinien zawierać szczegółowy opis kroków testowych, oczekiwane wyniki oraz warunki wstępne, które muszą być spełnione przed rozpoczęciem testu. Scenariusz testowy to kluczowy dokument w procesie testowania oprogramowania, który pozwala na systematyczne i dokładne sprawdzenie, czy aplikacja działa zgodnie z oczekiwaniami. Uwzględnienie kroków testowych pozwala na replikację testów, a opis warunków wstępnych zapewnia, że test jest przeprowadzany w odpowiednim środowisku.

Pytanie 25

Co oznacza termin 'immutability' w programowaniu funkcyjnym?

A. Funkcje mogą być przypisywane do zmiennych
B. Stan obiektu nie może być modyfikowany po jego utworzeniu
C. Kod może być wykonywany równolegle
D. Obiekty są automatycznie usuwane z pamięci

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Termin 'immutability' w programowaniu funkcyjnym odnosi się do właściwości obiektów, które po utworzeniu nie mogą być modyfikowane. W kontekście programowania funkcyjnego, gdzie funkcje są kluczowym składnikiem, immutability jest fundamentalnym założeniem, które pozwala na tworzenie bardziej przewidywalnych i bezpiecznych aplikacji. Kiedy obiekty są niemodyfikowalne, każde ich 'zmiana' generuje nowy obiekt, zamiast aktualizować istniejący, co eliminuję problemy związane z nieprzewidywalnym stanem aplikacji. Przykładem może być język programowania Scala, gdzie kolekcje, takie jak List, są niemodyfikowalne z założenia. Z perspektywy dobrych praktyk, immutability przyczynia się do łatwiejszej analizy kodu, testowania jednostkowego oraz równoległego przetwarzania danych. Ponadto, programowanie funkcyjne, bazujące na tej koncepcji, sprzyja tworzeniu czystych, modularnych i łatwych do przetestowania aplikacji.

Pytanie 26

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

A. HDD 5400 RPM, SATA II, 32 MB Cache
B. SSD NVMe PCIe 3.0, prędkość odczytu do 3500 MB/s
C. SSD SATA III, prędkość odczytu do 550 MB/s
D. HDD 7200 RPM, SATA III, 64 MB Cache

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
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 27

Które z poniższych nie jest frameworkiem JavaScript?

A. Angular
B. Vue.js
C. React
D. Django

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Django to framework zaprojektowany do budowy aplikacji webowych w języku Python, a zatem nie jest związany z JavaScriptem. Jego głównym celem jest uproszczenie procesu tworzenia w pełni funkcjonalnych aplikacji, co osiąga poprzez zestaw gotowych komponentów, takich jak system zarządzania bazą danych, mechanizmy autoryzacji oraz łatwe zarządzanie szablonami. Przykładem zastosowania Django może być rozwój serwisów e-commerce, gdzie framework ten wspiera szybkie i bezpieczne tworzenie skomplikowanej logiki aplikacji oraz zapewnia możliwość łatwego skalowania. Użycie Django w projektach, w których istotne są bezpieczeństwo i szybkość developmentu, stało się standardem w branży. W kontekście rozwoju aplikacji webowych, znajomość różnych frameworków, w tym Django, jest kluczowa dla programistów, którzy chcą być elastyczni i efektywni w tworzeniu rozwiązań backendowych."

Pytanie 28

Które z poniższych narzędzi jest używane do zarządzania wersjami kodu?

A. Kubernetes
B. Docker
C. Git
D. Jenkins

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Git jest narzędziem służącym do zarządzania wersjami kodu, które zyskało ogromną popularność wśród programistów na całym świecie. Jego podstawową funkcją jest umożliwienie śledzenia zmian w kodzie źródłowym, co jest niezbędne w procesie tworzenia oprogramowania. Dzięki Gitowi możemy w łatwy sposób przechowywać historię zmian, co pozwala na cofanie się do wcześniejszych wersji projektu, a także na pracę zespołową, gdzie wielu programistów może jednocześnie pracować nad różnymi częściami tego samego projektu. Git wspiera również gałęzie (ang. branches), które umożliwiają równoległe rozwijanie nowych funkcji bez zakłócania głównej linii rozwoju. Jest to kluczowe w środowiskach, gdzie rozwój i wydanie nowych funkcji musi być dobrze zorganizowane. Narzędzie to jest nie tylko darmowe, ale również open-source, co oznacza, że każdy może przyczynić się do jego rozwoju. Git jest standardem w branży IT, a jego znajomość jest często wymagana przez pracodawców. Dzięki swojej elastyczności i wszechstronności Git jest stosowany w projektach open-source, komercyjnych i edukacyjnych.

Pytanie 29

W jaki sposób można zmniejszyć liczbę danych zbieranych przez aplikacje mobilne?

A. Używać aplikacji bez sprawdzania ich źródła
B. Weryfikować i regulować uprawnienia aplikacji w ustawieniach
C. Nie blokować aplikacjom dostępu do lokalizacji oraz kontaktów
D. Udostępniać aplikacjom wszystkie niezbędne informacje

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Dostosowanie uprawnień aplikacji w ustawieniach swojego telefonu to naprawdę dobry sposób na ograniczenie tego, co aplikacje mogą o nas wiedzieć. Wiele z nich, jak np. te do robienia zdjęć, prosi o dostęp do lokalizacji czy kontaktów, ale nie zawsze jest to potrzebne. Warto co jakiś czas sprawdzić, czy jakieś aplikacje nie mają za dużo uprawnień. Dzięki temu lepiej zabezpieczymy swoją prywatność i zmniejszymy ryzyko, że nasze dane wyciekną. Lepiej też unikać aplikacji z nieznanych źródeł, bo mogą one zbierać więcej informacji, niż byśmy chcieli.

Pytanie 30

Zawarty w ramce opis licencji sugeruje, że mamy do czynienia z licencją

Rodzaj licencji, który zapewnia otwarty dostęp do oprogramowania dla wszystkich użytkowników programu, którego dotyczy: prawo do darmowego użytkowania, kopiowania, rozpowszechniania oraz tworzenia modyfikacji, ulepszania i rozbudowania.
A. Open Source
B. Freeware
C. Shareware
D. OEM

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Opis podany w pytaniu idealnie pasuje do koncepcji licencji Open Source. W praktyce oznacza to, że każdy użytkownik ma nie tylko prawo korzystać z oprogramowania za darmo, ale także może pobierać kod źródłowy, analizować go, modyfikować, ulepszać i nawet udostępniać dalej własne warianty. To daje ogromne możliwości rozwoju – nie tylko dla pojedynczych programistów, lecz przede wszystkim dla całych społeczności, które budują narzędzia i rozwiązania dużo szybciej niż zamknięte firmy. Przykłady? Linux, GIMP, LibreOffice, czy nawet przeglądarka Firefox. Moim zdaniem, to jest wręcz fundament nowoczesnego IT – wiele firm (nawet tych największych, typu Google czy Microsoft) opiera się dziś na rozwiązaniach Open Source, bo to daje elastyczność, bezpieczeństwo i transparentność. Branżowe standardy, np. licencja GNU GPL lub MIT, jasno określają zasady współdzielenia i ochrony praw autorskich. Dobra praktyka to zawsze sprawdzić warunki licencji przed wdrożeniem projektu w firmie albo szkole. Fajnie jest też pamiętać, że Open Source to nie tylko darmowość, ale przede wszystkim filozofia dzielenia się wiedzą, co w informatyce często prowadzi do innowacji i lepszej jakości kodu.

Pytanie 31

Jakie elementy zostaną wyświetlone w przeglądarce po wykonaniu kodu źródłowego stworzonego za pomocą dwóch funkcjonalnie równoważnych fragmentów? KOD W ANGULAR:

tags: string[] = ['tag1', 'tag2', 'tag3' ];
// ...
<p *ngFor="let tag of tags"> {{tag}} </p>
KOD W REACT.JS:
state = {   tags: ['tag1', 'tag2', 'tag3']   };
// ...   /* w instrukcji return metody render */
<React.Fragment>
  { this.state.tags.map(tag => <p key={tag}>{tag}</p>) }
</React.Fragment>
A. Jeden paragraf z pierwszym elementem tablicy tags.
B. Trzy paragrafy, w każdym z nich tekst o treści: {tag}.
C. Jeden paragraf zawierający wszystkie elementy tablicy tags w kolejności.
D. Trzy paragrafy, każdy odpowiadający kolejnemu elementowi tablicy tags.

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Kod generuje trzy paragrafy, każdy z kolejnym elementem tablicy tags. Jest to standardowy sposób iteracji po elementach tablicy i renderowania ich jako oddzielnych elementów HTML. W praktyce, takie podejście jest szeroko stosowane w aplikacjach frontendowych, gdzie dynamicznie tworzone elementy interfejsu użytkownika są generowane na podstawie tablic lub list danych. Każdy element tablicy jest iterowany i osobno przekształcany w znacznik HTML, co pozwala na łatwe zarządzanie i aktualizowanie treści strony w czasie rzeczywistym. To podejście jest zgodne z najlepszymi praktykami dotyczącymi manipulacji DOM i zapewnia wysoką wydajność aplikacji.

Pytanie 32

Jakie są cechy biblioteki statycznej w zestawieniu z dynamiczną?

A. Jest wczytywana do pamięci podczas działania aplikacji
B. Nie potrzebuje obecności pliku wykonywalnego
C. Może być zmieniana w czasie działania programu
D. Zostaje dodana do pliku wykonywalnego w trakcie kompilacji

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Biblioteka statyczna jest dołączana do pliku wykonywalnego podczas procesu kompilacji. Oznacza to, że jej kod staje się integralną częścią aplikacji, co eliminuje konieczność ładowania jej w czasie wykonywania programu. Tego typu biblioteki charakteryzują się większym rozmiarem pliku wynikowego, ale oferują wyższą wydajność, ponieważ wszystkie funkcje są dostępne lokalnie, bez dodatkowych operacji ładowania. Przykładami bibliotek statycznych są pliki .lib w C/C++.

Pytanie 33

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

A. Mechanizm bezpieczeństwa określający, które domeny mogą uzyskiwać dostęp do zasobów na serwerze
B. Metoda kompresji danych w aplikacjach webowych
C. System zarządzania plikami statycznymi w aplikacjach SPA
D. Protokół komunikacji między różnymi bazami danych

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
CORS, czyli Cross-Origin Resource Sharing, to mechanizm bezpieczeństwa, który pozwala kontrolować, które domeny mają dostęp do zasobów na serwerze. Jest to niezwykle ważne w kontekście aplikacji webowych, które często korzystają z zasobów z różnych źródeł. Dzięki CORS serwery mogą definiować, które domeny mogą wysyłać żądania HTTP i uzyskiwać odpowiedzi z ich zasobów. Na przykład, jeśli Twoja aplikacja webowa działa na domenie 'example.com', ale potrzebuje danych z API na 'api.example.org', CORS pozwala na skonfigurowanie serwera API, aby zezwalał na te żądania. CORS jest kluczowy dla bezpieczeństwa aplikacji, ponieważ zapobiega atakom typu cross-site scripting (XSS) i innym nieautoryzowanym dostępom. Praktyczne zastosowanie CORS wprowadza nagłówki HTTP, takie jak 'Access-Control-Allow-Origin', które informują przeglądarki, jakie domeny mają prawo do interakcji z danym zasobem. Korzystanie z CORS jest uznawane za dobrą praktykę w budowaniu bezpiecznych aplikacji webowych, co podkreśla znaczenie jego implementacji.

Pytanie 34

Jakie jest przeznaczenie komentarzy w kodzie źródłowym programu?

A. Do definiowania zmiennych globalnych
B. Do uruchamiania kodu w trybie debugowania
C. Do dokumentowania działania kodu i ułatwienia jego zrozumienia
D. Do optymalizacji wydajności kodu

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Komentarze w kodzie źródłowym programu pełnią kluczową rolę w dokumentowaniu działania aplikacji. Dzięki nim programiści mogą opisywać, co robią poszczególne fragmenty kodu, jakie funkcje realizują oraz jakie są zależności między modułami. Komentarze nie wpływają na działanie programu, ale znacząco ułatwiają pracę nad nim w przyszłości, zwłaszcza gdy projekt jest rozwijany przez wielu programistów lub po dłuższej przerwie. Komentarze poprawiają czytelność kodu, minimalizując ryzyko błędów wynikających z niejasności lub złej interpretacji działania aplikacji. W dobrze napisanym kodzie komentarze są używane strategicznie – opisują kluczowe algorytmy, niestandardowe rozwiązania oraz obszary wymagające szczególnej uwagi. Przejrzysty i dobrze udokumentowany kod to fundament skalowalnych i łatwych w utrzymaniu aplikacji.

Pytanie 35

Celem mechanizmu obietnic (ang. promises) w języku JavaScript jest

A. ulepszenie czytelności kodu synchronicznego
B. zarządzanie funkcjonalnością związaną z kodem asynchronicznym
C. zastąpienie mechanizmu dziedziczenia w programowaniu obiektowym
D. zarządzanie przechwytywaniem błędów aplikacji

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Mechanizm obietnic (promises) w JavaScript to, moim zdaniem, jedno z najważniejszych udogodnień, które pojawiły się w języku, żeby ogarnąć cały ten chaos wokół asynchroniczności. Typowa sytuacja kiedyś wyglądała tak, że w kodzie robiło się „callback hell” – zagnieżdżone funkcje wywołujące się nawzajem, co mocno utrudniało życie. Promise pozwala na o wiele czytelniejsze i wygodniejsze zarządzanie operacjami, które kończą się „kiedyś”, np. pobieraniem danych z API, zapisem do pliku, czy czekaniem na odpowiedź użytkownika. Z mojego doświadczenia wynika, że dzięki promises jest dużo łatwiej obsłużyć zarówno sukces, jak i błędy – możesz skorzystać z then(), catch(), a nawet łańcuchować kilka asynchronicznych zadań bez gubienia się w kodzie. Szczególnie przydatne jest to w pracy z fetch(), gdzie bez promises cała obsługa sieci wyglądałaby strasznie topornie. Dodatkowo promises są w pełni zgodne ze standardem ECMAScript 2015 (ES6) i stanowią podstawę dla nowocześniejszych rozwiązań, takich jak async/await. Praktycznie każdy zawodowy frontendowiec czy backendowiec pracujący z Node.js powinien je znać, bo to już nie fanaberia, a codzienność. Dobra praktyka to właśnie korzystanie z promises tam, gdzie tylko mamy do czynienia z nieblokującymi operacjami. Takie podejście nie tylko poprawia czytelność kodu, ale znacząco ułatwia jego utrzymanie i debugowanie.

Pytanie 36

Który z poniższych metod najlepiej zabezpiecza dane karty płatniczej podczas zakupów online?

A. Podawanie informacji o karcie w odpowiedzi na wiadomość e-mail od nieznajomego
B. Przechowywanie numeru karty w przeglądarce internetowej
C. Używanie wirtualnych kart płatniczych lub jednorazowych kodów
D. Udostępnianie danych karty na platformach internetowych

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Korzystanie z wirtualnych kart płatniczych lub jednorazowych kodów to skuteczny sposób na ochronę danych karty płatniczej podczas transakcji internetowych. Wirtualne karty mają ograniczony okres ważności i są powiązane z określoną kwotą, co minimalizuje ryzyko kradzieży całego konta bankowego. Jednorazowe kody płatności wygasają po jednorazowym użyciu, co uniemożliwia ich ponowne wykorzystanie przez osoby trzecie. Dzięki tym metodom użytkownicy znacznie redukują ryzyko oszustw i nieautoryzowanych transakcji.

Pytanie 37

Jakie kroki należy podjąć, aby skutecznie zabezpieczyć dane na komputerze?

A. Dzielić się hasłami do plików z współpracownikami
B. Nie używać kopii zapasowych
C. Systematycznie aktualizować oprogramowanie i wykonywać kopie zapasowe
D. Przechowywać dane na niezabezpieczonych nośnikach przenośnych

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Regularne aktualizowanie oprogramowania oraz tworzenie kopii zapasowych to kluczowe działania zapewniające bezpieczeństwo danych na komputerze. Aktualizacje łatają luki w zabezpieczeniach i eliminują błędy, które mogą zostać wykorzystane przez hakerów. Kopie zapasowe chronią dane przed utratą spowodowaną awarią sprzętu, atakiem ransomware lub przypadkowym usunięciem. Najlepszą praktyką jest przechowywanie kopii zapasowych w różnych miejscach – lokalnie i w chmurze – co dodatkowo zwiększa poziom zabezpieczenia przed nieprzewidzianymi sytuacjami.

Pytanie 38

Który z wymienionych programów jest przeznaczony do zarządzania projektami przy pomocy tablic kanban?

A. Word
B. Photoshop
C. Jira
D. Trello

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Trello to narzędzie do zarządzania projektami, które wykorzystuje tablice kanban do organizacji i monitorowania zadań. Użytkownicy mogą tworzyć karty reprezentujące poszczególne zadania, które następnie są przenoszone między kolumnami odzwierciedlającymi etapy realizacji. Dzięki swojej prostocie i intuicyjności Trello jest szeroko stosowane zarówno w małych zespołach, jak i dużych organizacjach. Umożliwia efektywne zarządzanie projektami, planowanie sprintów oraz monitorowanie bieżącego statusu prac. Tablice kanban pomagają wizualizować przepływ pracy, co ułatwia identyfikację wąskich gardeł i zarządzanie priorytetami.

Pytanie 39

Podstawowym celem środowisk IDE takich jak: IntelliJ IDEA, Eclipse, NetBeans jest programowanie w języku:

A. Python
B. Java
C. C++
D. C#

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
IDE, czyli Zintegrowane Środowiska Programistyczne, takie jak IntelliJ IDEA, Eclipse czy NetBeans, od lat są uznawane za najważniejsze narzędzia do tworzenia aplikacji w języku Java. Te środowiska zostały od podstaw zaprojektowane właśnie z myślą o programistach Javy – wspierają typowe projekty Java SE, Java EE czy nawet JavaFX. Moim zdaniem, ich integracja z narzędziami takimi jak Maven, Gradle, testami jednostkowymi JUnit albo debuggerami Javy to prawdziwy game-changer. Na co dzień korzysta się tam z podpowiedzi składni, automatycznego refaktoringu, generatorów kodu i systemów kontroli wersji. Przykładowo, większość firm w Polsce, które tworzą oprogramowanie korporacyjne, wybiera właśnie te IDE do pracy z Java Spring Boot czy Hibernate. Nawet podczas nauki w technikum często pierwsze projekty Java robi się właśnie w Eclipse albo IntelliJ. Pewnie, można dorzucić pluginy do innych języków, ale to Java jest sercem tych środowisk i to dla niej są one najbardziej zaawansowane, zgodnie z najlepszymi wzorcami branżowymi. Jak patrzę na ogłoszenia o pracę, to praktycznie każda oferta na programistę Java zakłada znajomość choć jednego z tych IDE. To jasno pokazuje, że ich podstawowym celem jest ułatwienie i przyspieszenie tworzenia oprogramowania właśnie w tym języku.

Pytanie 40

Które zdarzenie w JavaScript jest wywoływane po całkowitym załadowaniu strony?

A. window.onload
B. window.render
C. document.ready
D. page.complete

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Odpowiedź "window.onload" jest poprawna, ponieważ zdarzenie to jest wywoływane, gdy cała strona, w tym wszystkie obrazy, skrypty i style, zostały całkowicie załadowane. Jest to niezwykle istotne w kontekście programowania w JavaScript, ponieważ pozwala na pewność, że wszystkie zasoby są dostępne, zanim podejmiemy jakiekolwiek działania na elementach DOM. Przykładowo, jeśli chcemy zmienić zawartość elementu na stronie lub dodać do niej interaktywne funkcje, musimy upewnić się, że cały dokument jest już w pełni załadowany. Dobrym przykładem zastosowania jest sytuacja, kiedy po załadowaniu strony chcemy zainicjować jakieś skrypty, które manipulują elementami DOM, na przykład dodanie zdarzeń do przycisków lub animacji. Współczesne standardy wskazują na stosowanie tego zdarzenia w połączeniu z innymi metodami, jak np. "DOMContentLoaded", co pozwala na bardziej efektywne zarządzanie ładowaniem zasobów. Warto zaznaczyć, że chociaż "window.onload" jest użyteczne, w wielu nowoczesnych aplikacjach front-end używa się frameworków, które mogą oferować bardziej zaawansowane mechanizmy zarządzania cyklem życia aplikacji.