Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 22 października 2025 15:09
  • Data zakończenia: 22 października 2025 15:23

Egzamin zdany!

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

Wymagane minimum: 20 punktów (50%)

Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

Jakie rezultaty pojawią się po uruchomieniu poniższego kodu napisanego w języku C++?

Ilustracja do pytania
A. Bazowa. Bazowa.
B. Pochodna. Pochodna.
C. Pochodna. Bazowa.
D. Bazowa. Pochodna.
Wyświetlenie 'Bazowa. Pochodna.' wskazywałoby, że tylko jedna z metod została nadpisana, co nie ma sensu w tym przypadku. Znacznik 'Bazowa. Bazowa.' to już totalny brak polimorfizmu, co zupełnie mija się z celem tego kodu. A 'Pochodna. Bazowa.' sugerowałoby, że mamy do czynienia z częściowym nadpisaniem metod, co też nie jest zgodne z tym, co mamy w kodzie.

Pytanie 2

Jakie jest zastosowanie iteratora w zbiorach?

A. Do zmiany rodzaju zbioru w trakcie działania aplikacji
B. Do generowania kopii zbiorów
C. Do iterowania po elementach zbioru
D. Do usuwania elementów ze zbioru
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 3

Co to jest Webpack?

A. Narzędzie do budowania modułów i zarządzania zależnościami w aplikacjach JavaScript
B. Framework JavaScript do tworzenia aplikacji mobilnych
C. System zarządzania bazami danych dla aplikacji Node.js
D. Biblioteka do testowania kodu JavaScript
Wybór innych odpowiedzi odzwierciedla pewne nieporozumienia dotyczące roli i funkcji narzędzi w ekosystemie JavaScript. Na przykład, obierając odpowiedź dotyczącą frameworków JavaScript do tworzenia aplikacji mobilnych, można mylnie zakładać, że Webpack jest narzędziem do budowy aplikacji mobilnych. W rzeczywistości, Webpack nie jest frameworkiem, lecz narzędziem do bundlingu, co oznacza, że nie jest bezpośrednio zaangażowane w tworzenie aplikacji mobilnych, takich jak React Native czy Ionic. Podobnie, wybór opcji dotyczącej biblioteki do testowania kodu JavaScript sugeruje nieporozumienie co do głównego celu Webpacka. Narzędzia do testowania, takie jak Jest czy Mocha, pełnią zupełnie inną funkcję, skoncentrowaną na zapewnieniu jakości kodu poprzez weryfikację jego poprawności i zachowania, podczas gdy Webpack skupia się na zarządzaniu zależnościami i optymalizacji zasobów. Ostatnia z błędnych odpowiedzi, czyli dotycząca systemów zarządzania bazami danych, również jest nietrafiona, ponieważ Webpack nie ma nic wspólnego z bazami danych ani z backendem aplikacji. Webpack koncentruje się na frontendzie, co podkreśla istotność jego roli w nowoczesnym rozwoju aplikacji webowych, gdzie efektywność ładowania i organizacja kodu są kluczowe.

Pytanie 4

Jaki numer telefonu należy wybrać, aby skontaktować się z pogotowiem ratunkowym w Polsce?

A. 998
B. 112
C. 997
D. 113
Numer 997 łączy bezpośrednio z policją, 998 ze strażą pożarną, a 113 nie jest numerem alarmowym w Polsce. Choć numery 997 i 998 są ważne, to numer 112 jest bardziej wszechstronny, umożliwiając kontakt z wszystkimi służbami jednocześnie, co jest kluczowe w sytuacjach kryzysowych.

Pytanie 5

Która z poniższych właściwości odnosi się do sieci bezprzewodowej?

A. Wymaga zastosowania przewodów do łączenia urządzeń
B. Jest bardziej narażona na zakłócenia w przesyłaniu danych
C. Nie potrzebuje zabezpieczeń, ponieważ jest domyślnie chroniona
D. Nie funkcjonuje w obszarach z dużą liczbą urządzeń
Sieci bezprzewodowe charakteryzują się tym, że wykorzystują fale radiowe do transmisji danych, co sprawia, że są bardziej podatne na zakłócenia. Zakłócenia te mogą pochodzić z różnych źródeł, takich jak inne urządzenia bezprzewodowe, mikrofalówki, czy nawet fizyczne przeszkody, takie jak ściany. W przypadku sieci Wi-Fi, które są powszechnie stosowane w domach i biurach, sygnał radiowy może być osłabiony przez metalowe obiekty oraz inne materiały budowlane. To zjawisko można zminimalizować, stosując nowoczesne standardy, takie jak IEEE 802.11ac, które oferują lepszą wydajność i stabilność sygnału. Praktycznym przykładem jest sytuacja, w której użytkownicy znajdują się w gęsto zabudowanym obszarze miejskim, gdzie wiele sieci Wi-Fi działa jednocześnie, co zwiększa ryzyko zakłóceń i wpływa na jakość połączenia. Zrozumienie tej cechy sieci bezprzewodowych jest kluczowe dla ich efektywnego użytkowania oraz projektowania.

Pytanie 6

Jak przedstawia się liczba dziesiętna 255 w systemie szesnastkowym?

A. FE
B. EF
C. FF
D. 100
Liczba dziesiętna 255 jest reprezentowana w systemie szesnastkowym jako FF. Aby zrozumieć, dlaczego tak jest, należy przyjrzeć się procesowi konwersji z systemu dziesiętnego na szesnastkowy. System dziesiętny oparty jest na podstawie 10, co oznacza, że używa dziesięciu cyfr od 0 do 9. W systemie szesnastkowym, który ma podstawę 16, używane są cyfry od 0 do 9 oraz litery od A do F, gdzie A odpowiada 10, B - 11, C - 12, D - 13, E - 14, a F - 15. Aby przeliczyć 255 na system szesnastkowy, dzielimy tę liczbę przez 16. Pierwsza operacja daje nam 15 jako wynik całkowity oraz 15 jako resztę, co w systemie szesnastkowym jest reprezentowane literą F. Dalsze dzielenie 15 przez 16 daje wynik 0 oraz resztę 15, co również jest reprezentowane jako F. Zatem, zapisując reszty w odwrotnej kolejności, otrzymujemy FF. Taki zapis jest używany w różnych standardach, takich jak HTML i CSS, gdzie kolory są przedstawiane w formacie szesnastkowym. Przykładem może być kolor czerwony, którego zapis to #FF0000, co oznacza maksymalną wartość czerwonego składnika i zera dla niebieskiego oraz zielonego. Warto znać te konwersje, zwłaszcza w programowaniu i projektowaniu stron internetowych, gdzie często pracuje się z wartościami szesnastkowymi.

Pytanie 7

Które narzędzie najlepiej nadaje się do analizy wydajności aplikacji JavaScript?

A. Chrome DevTools Performance
B. npm
C. Webpack
D. Babel
Wybór narzędzi do analizy wydajności aplikacji JavaScript jest kluczowy, jednak nie każde narzędzie nadaje się do tego celu. Webpack, na przykład, jest narzędziem do budowania aplikacji, które umożliwia pakowanie modułów JavaScript i zarządzanie zależnościami, ale nie jest narzędziem służącym do analizy wydajności. Jego główną funkcją jest optymalizacja kodu i zasobów w celu zmniejszenia rozmiaru aplikacji, co pośrednio może wpłynąć na wydajność, ale nie pozwala na bezpośrednią analizę jej działania w czasie rzeczywistym. Babel również nie jest narzędziem do analizy wydajności. To transpiler, który umożliwia używanie nowoczesnych funkcji JavaScript w starszych przeglądarkach. Jego rolą jest konwersja kodu, a nie monitorowanie jego efektywności. npm to menedżer pakietów, który służy do instalacji i zarządzania bibliotekami JavaScript, ale nie zapewnia narzędzi do analizy wydajności aplikacji. Wybierając niewłaściwe narzędzia, można zainwestować czas w coś, co nie przyniesie oczekiwanych rezultatów, co jest powszechnym błędem wśród programistów. Kluczowe jest zrozumienie, że do skutecznej analizy wydajności potrzebne są narzędzia, które dają nam wgląd w działanie kodu, a nie tylko w jego strukturę czy zależności.

Pytanie 8

Jaką wydajność posiada sieć, która przesyła 500 MB danych w czasie 10 sekund?

A. 400 Mbps
B. 50 Mbps
C. 40 Mbps
D. 500 Mbps
Na pierwszy rzut oka mogłoby się wydawać, że 50 Mbps to rozsądny wynik, ponieważ 500 MB w 10 sekund to duża ilość danych, ale jeśli przeliczymy jednostki poprawnie, szybko zauważymy błąd. Wynik 50 Mbps oznaczałby, że w ciągu 10 sekund przesyłamy jedynie 500 megabitów, czyli około 62,5 MB danych. To znacznie mniej niż 500 MB, więc taka przepustowość byłaby zdecydowanie zbyt mała, aby przesłać taką ilość danych w podanym czasie. Z kolei odpowiedź 500 Mbps sugeruje przepustowość większą niż w rzeczywistości. Gdyby sieć miała taką wydajność, to w ciągu 10 sekund przesłałaby aż 625 MB danych (500 Mb/s × 10 s = 5000 Mb = 625 MB), czyli więcej niż w zadaniu. Oznacza to, że taka prędkość byłaby zawyżona w stosunku do faktycznej wartości. Natomiast 40 Mbps jest niepoprawne, gdyż oznaczałoby możliwość przesłania jedynie 400 megabitów w 10 sekund, co odpowiada zaledwie 50 MB danych. To prawie dziesięć razy mniej niż rzeczywista ilość danych w zadaniu, więc sieć o takiej przepustowości nie byłaby w stanie wykonać transmisji w podanym czasie. Wszystkie te błędne odpowiedzi wynikają z nieprawidłowego przeliczenia jednostek lub braku uwzględnienia faktu, że bajty należy zamienić na bity przed obliczeniem przepustowości. Tylko wynik 400 Mbps jest zgodny z zasadami i poprawnym przeliczeniem danych.

Pytanie 9

Oznaczenie ochrony przeciwpożarowej przedstawione na symbolu wskazuje na

Ilustracja do pytania
A. przełącznik zasilania
B. punkt remote release
C. system alarmowy przeciwpożarowy
D. rozdzielnię elektryczną
Ten symbol to alarm pożarowy. Jest naprawdę ważny w systemach przeciwpożarowych, bo pozwala szybko dać znać o zagrożeniu. Dzięki temu można dużo szybciej zadbać o bezpieczeństwo w różnych budynkach.

Pytanie 10

Jakiego typu funkcja jest tworzona poza klasą, ale ma dostęp do jej prywatnych i chronionych elementów?

A. Metoda statyczna
B. Funkcja zaprzyjaźniona
C. Destruktor
D. Konstruktor
Funkcja zaprzyjaźniona to specjalny typ funkcji, który jest deklarowany jako 'friend' w ciele klasy, co pozwala jej na dostęp do prywatnych i chronionych składowych tej klasy. Chociaż funkcja zaprzyjaźniona jest definiowana poza klasą, może operować na jej wewnętrznych danych, co czyni ją bardzo użytecznym narzędziem w programowaniu obiektowym. Tego rodzaju funkcje są często wykorzystywane w przypadkach, gdy konieczne jest współdziałanie dwóch klas lub funkcji narzędziowych, które muszą manipulować danymi wewnętrznymi klasy, ale nie powinny być jej metodami członkowskimi. Dzięki funkcjom zaprzyjaźnionym można zapewnić elastyczność w dostępie do danych przy jednoczesnym zachowaniu hermetyzacji klasy. Przykładem może być przeciążenie operatorów, np. operator +, który musi mieć dostęp do prywatnych składowych obu operandów.

Pytanie 11

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

Ilustracja do pytania
A. jest przywiązana do klasy Vehicle
B. stanowi klasę bazową (nie dziedziczy z żadnej klasy)
C. używa prywatnych pól klasy Vehicle
D. dziedziczy po Vehicle
Błędne koncepcje zawarte w pozostałych odpowiedziach wynikają z nieprawidłowego zrozumienia relacji pomiędzy klasami w programowaniu obiektowym. Użycie terminu zaprzyjaźniona klasa w kontekście C# jest niepoprawne, ponieważ język ten nie wspiera mechanizmu przyjaźni między klasami, który jest dostępny np. w C++. W C#, klasa zaprzyjaźniona nie istnieje, co eliminuje możliwość interakcji opartej na przyjaźni znanej z innych języków. Kolejną błędną koncepcją jest stwierdzenie, że klasa Car korzysta z pól prywatnych klasy Vehicle. W rzeczywistości, w programowaniu obiektowym, pola prywatne są niedostępne dla klas dziedziczących. Jeżeli zależy nam na dostępie do stanów lub zachowań klasy bazowej, należy je udostępnić poprzez właściwości lub metody o odpowiednim poziomie dostępu, np. protected. Pominięcie tego aspektu często prowadzi do błędów projektowych i narusza zasadę enkapsulacji. Ostatnia błędna odpowiedź, że klasa Car jest klasą bazową (nie dziedziczy po żadnej klasie), pomija fakt, że w C# każda klasa, która nie wskazuje jawnie klasy bazowej, domyślnie dziedziczy po klasie Object. Jednakże w przypadku podanej definicji, składnia jasno wskazuje na dziedziczenie po konkretnej klasie Vehicle. Zrozumienie tych błędów jest kluczowe w unikaniu typowych pułapek przy projektowaniu hierarchii klas w językach obiektowych, co jest istotne dla zachowania czytelności i skalowalności kodu.

Pytanie 12

Co to jest WebSockets?

A. Biblioteka JavaScript do manipulacji danymi JSON
B. Format zapisu danych w bazach NoSQL
C. Metoda zabezpieczania połączeń HTTP
D. Protokół komunikacyjny zapewniający dwukierunkową komunikację między przeglądarką a serwerem
WebSockets to protokół komunikacyjny, który umożliwia dwukierunkową, pełnodupleksową komunikację między klientem a serwerem. To oznacza, że zarówno przeglądarka, jak i serwer mogą wysyłać dane w dowolnym momencie, co znacząco różni się od tradycyjnego modelu HTTP, gdzie klient inicjuje każde połączenie. Przykładem zastosowania WebSockets jest aplikacja czatu w czasie rzeczywistym, gdzie użytkownicy mogą widzieć wiadomości natychmiastowo, bez potrzeby odświeżania strony. Dodatkowo, WebSockets zmniejszają opóźnienia w komunikacji, co jest kluczowe w aplikacjach wymagających szybkiej interakcji, takich jak gry online czy platformy do handlu. Warto zaznaczyć, że WebSockets są zdefiniowane w standardzie IETF jako RFC 6455, a ich wykorzystanie powinno być zgodne z najlepszymi praktykami w zakresie bezpieczeństwa, takimi jak użycie protokołu wSecure WebSockets (wss://) do zapewnienia bezpieczeństwa przesyłanych danych.

Pytanie 13

Co to jest git rebase?

A. Metoda tworzenia kopii zapasowej repozytorium
B. Narzędzie do rozwiązywania konfliktów między plikami
C. Technika integracji zmian z jednej gałęzi do drugiej przez przeniesienie lub połączenie sekwencji commitów
D. Polecenie do tworzenia nowego repozytorium
Nieprawidłowe odpowiedzi wskazują na nieporozumienie dotyczące podstawowych funkcji narzędzi do kontroli wersji. Tworzenie nowego repozytorium to operacja rozpoczęcia nowego projektu, co jest zupełnie inną funkcjonalnością i nie ma związku z integracją zmian w istniejącym projekcie. Narzędzia do rozwiązywania konfliktów między plikami, takie jak merge, są stosowane w sytuacjach, gdy zmiany w dwóch gałęziach kolidują, ale nie dotyczą one bezpośrednio rebase, który ma na celu uporządkowanie i uproszczenie historii commitów. Metoda tworzenia kopii zapasowej repozytorium również nie ma związku z rebase, gdyż rebase nie jest narzędziem do zabezpieczania danych, lecz do przekształcania historii commitów. Często błędne rozumienie polecenia rebase wynika z mylenia go z innymi operacjami, takimi jak merge, które łączą zmiany dwóch gałęzi bez modyfikacji istniejącej historii. Zaleca się, aby deweloperzy dobrze zapoznali się z różnicami między tymi operacjami, aby skutecznie zarządzać historią projektu i unikać nieporozumień.

Pytanie 14

Jaki będzie wynik działania poniższego kodu Python?

def fun(x, l=[]): l.append(x) return l print(fun(1)) print(fun(2)) print(fun(3, [])) print(fun(4))
A. [1], [2], [3], [4, 3]
B. [1], [1, 2], [3], [1, 2, 4]
C. [1], [2], [3], [4]
D. [1], [1, 2], [3], [3, 4]
Wybór błędnych odpowiedzi często wynika z niewłaściwego zrozumienia działania domyślnych argumentów funkcji w Pythonie. Przykładowo, stwierdzenie, że drugi wynik to [2], a czwarty to [4], pokazuje, że nie uwzględniono, iż domyślna lista 'l' nie jest tworzona od nowa przy każdym wywołaniu funkcji. W Pythonie, jeśli nie podasz innej listy, wszystkie wywołania funkcji dzielą się tą samą referencją do oryginalnej listy, co prowadzi do sytuacji, w której dodawane są nowe elementy do już istniejącej listy. Właśnie dlatego drugi wynik to [1, 2], a nie [2], ponieważ element 1 został dodany do tej samej listy. Przy trzecim wywołaniu funkcji, gdy przekazujemy pustą listę, rzeczywiście otrzymujemy [3], ale czwarty wynik znowu odnosi się do listy, która zawiera już elementy 1 i 2. Z tego powodu, wynik to [1, 2, 4] zamiast [4]. Warto zwrócić uwagę, że typowe błędy w myśleniu często prowadzą do uproszczeń, które mogą zakłócać zrozumienie bardziej złożonych koncepcji, takich jak zarządzanie pamięcią i zmiennymi lokalnymi versus globalnymi. Ostatecznie, znajomość zasad działania domyślnych argumentów w Pythonie jest kluczowa w praktycznym programowaniu, ponieważ pozwala unikać nieoczekiwanych zachowań w kodzie.

Pytanie 15

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

A. Venna
B. związków encji
C. Gantta
D. aktywnosci UML
Diagram Gantta to narzędzie do wizualizacji harmonogramu projektów. Umożliwia śledzenie postępów i zarządzanie zadaniami, co czyni go niezwykle przydatnym w monitorowaniu pracy zespołu. Każde zadanie jest przedstawione jako pasek, którego długość odpowiada czasowi trwania zadania. Diagram Gantta umożliwia również identyfikację zależności między zadaniami oraz zarządzanie zasobami, co czyni go kluczowym narzędziem w zarządzaniu projektami IT.

Pytanie 16

Co oznacza termin 'polimorfizm' w programowaniu obiektowym?

A. Dziedziczenie metod z klasy bazowej
B. Ustanowienie tylko jednego typu dla klasy
C. Zdolność do przyjmowania wielu form przez obiekt
D. Ograniczenie do jednej formy dla obiektu
Polimorfizm to jedno z fundamentalnych pojęć w programowaniu obiektowym, które pozwala na tworzenie elastycznych i skalowalnych aplikacji. Dzięki polimorfizmowi możemy pisać kod, który operuje na obiektach, nie znając ich dokładnego typu w momencie kompilacji. To bardzo przydatne, gdy mamy do czynienia z hierarchią klas, gdzie różne klasy dziedziczą po jednej bazowej. Praktycznym przykładem może być system, w którym mamy klasę bazową 'Zwierzę' i klasy pochodne, takie jak 'Pies' i 'Kot'. Dzięki polimorfizmowi możemy stworzyć funkcję, która przyjmuje parametr typu 'Zwierzę', a następnie wywołuje metodę, która jest specyficzna dla danej klasy pochodnej. To umożliwia nam pisanie bardziej ogólnego i mniej związanego z konkretnymi typami kodu. Polimorfizm pozwala również na wdrażanie wzorców projektowych, takich jak strategia czy fabryka, które zwiększają modularność i reużywalność kodu. Korzystanie z polimorfizmu jest zgodne z zasadami SOLID, szczególnie zasadą podstawienia Liskov, która mówi, że obiekty klasy bazowej mogą być zastępowane obiektami klasy pochodnej bez wpływu na poprawność działania programu.

Pytanie 17

Co to jest Event Loop w JavaScript?

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

Pytanie 18

Co to jest CI/CD w kontekście rozwoju oprogramowania?

A. Ciągła integracja i ciągłe dostarczanie - praktyki automatyzujące proces wdrażania kodu
B. Code Implementation/Code Delivery - metodyka implementacji i dostarczania kodu
C. Component Isolation/Component Deployment - izolacja i wdrażanie komponentów aplikacji
D. Customer Interface/Customer Design - projektowanie interfejsów zorientowane na klienta
W kontekście rozwoju oprogramowania, pojęcia takie jak Customer Interface/Customer Design, Code Implementation/Code Delivery oraz Component Isolation/Component Deployment, które zostały zaproponowane jako alternatywy dla CI/CD, posiadają fundamentalne różnice, które sprawiają, że nie są one odpowiednie w tej konkretnej sytuacji. Customer Interface/Customer Design koncentruje się na projektowaniu interfejsów użytkownika, co jest istotne, ale nie dotyczy bezpośrednio procesów automatyzacji związanych z integracją i dostarczaniem kodu. Z kolei Code Implementation/Code Delivery odnosi się do ogólnych metod implementacji kodu, co również nie wyczerpuje tematu CI/CD, gdyż nie uwzględnia aspektu automatyzacji i ciągłości procesów. Na koniec, Component Isolation/Component Deployment może sugerować izolację komponentów aplikacji, lecz nie uwzględnia znaczenia ciągłej integracji w kontekście synchronizacji i wczesnego wykrywania błędów. W praktyce, wiele organizacji staje przed wyzwaniami związanymi z integracją różnych komponentów oraz automatyzacji procesów, co może prowadzić do opóźnień w dostarczaniu oprogramowania. Dlatego kluczowe jest zrozumienie, że CI/CD to nie tylko termin techniczny, ale zbiór praktyk, który przynosi realne korzyści w postaci wyższej jakości kodu i szybszego dostarczania rozwiązań do użytkowników.

Pytanie 19

Który z wymienionych poniżej przykładów ilustruje użycie systemu informatycznego w działalności gospodarczej?

A. E-sklep
B. System wentylacji
C. System sterowania ruchem miejskim
D. System nawigacji GPS
E-sklep, jako przykład zastosowania systemu informatycznego w działalności biznesowej, reprezentuje złożony ekosystem technologiczny, który umożliwia przedsiębiorstwom sprzedaż produktów i usług w Internecie. E-sklepy wykorzystują różnorodne technologie, takie jak systemy zarządzania treścią (CMS), bazy danych oraz systemy płatności, co pozwala na efektywne zarządzanie ofertą, realizację zamówień oraz obsługę klienta. Przykładem może być platforma Shopify, która oferuje funkcjonalności umożliwiające łatwe tworzenie i zarządzanie sklepem online. E-sklepy są zgodne z różnymi standardami, takimi jak PCI DSS, które zapewniają bezpieczeństwo transakcji płatniczych. Dzięki integracji z systemami analitycznymi, właściciele e-sklepów mogą śledzić zachowania użytkowników, co pozwala na optymalizację oferty oraz strategii marketingowej. Tego rodzaju rozwiązania informatyczne fundamentalnie zmieniają sposób, w jaki przedsiębiorstwa prowadzą działalność i komunikują się z klientami, czyniąc procesy bardziej wydajnymi i zautomatyzowanymi.

Pytanie 20

Jakie informacje można uzyskać na temat metod w klasie Point?

Ilustracja do pytania
A. Zawierają błąd, ponieważ nazwy metod powinny być różne.
B. Są przeciążone.
C. Służą jako konstruktory w zależności od liczby argumentów.
D. Zawierają przeciążenie operatora.
Metody klasy Point są przeciążone, co oznacza, że mogą mieć tę samą nazwę, ale różnią się liczbą lub typem parametrów. Przeciążenie metod to jedna z podstawowych technik programowania obiektowego, która pozwala na bardziej elastyczne projektowanie kodu. Dzięki temu programista może tworzyć metody dostosowane do różnych sytuacji, zachowując spójność nazw i intuicyjność użycia. To zwiększa czytelność i utrzymanie kodu, ponieważ wywołania metod o tej samej nazwie, ale różnych parametrach, są łatwe do zrozumienia i odnalezienia.

Pytanie 21

Jakie jest najważniejsze działanie w trakcie analizy wymagań klienta przed rozpoczęciem realizacji projektu aplikacji?

A. Selekcja języka programowania
B. Rozdzielenie ról w zespole projektowym
C. Zrozumienie potrzeb biznesowych i oczekiwań klienta
D. Stworzenie diagramu Gantta
Fajnie, że zauważyłeś, jak ważne jest zrozumienie potrzeb biznesowych i oczekiwań klienta. To kluczowa sprawa przed rozpoczęciem pracy nad projektem aplikacji. Bez tego, nawet najfajniejszy kod może nie spełniać wymagań, a to byłoby szkoda, prawda? Analiza wymagań to nie tylko rozpoznanie celów, ale też spotkania z osobami zaangażowanymi w projekt i zbadanie rynku. Dzięki temu możemy stworzyć aplikację, która naprawdę odpowiada na specyficzne potrzeby, co czyni ją bardziej użyteczną i konkurencyjną. No i oczywiście, jak dobrze określimy, czego potrzebują użytkownicy, to mniej nieporozumień po drodze, a klienci będą bardziej zadowoleni, co zawsze jest na plus.

Pytanie 22

Jakie jest zastosowanie języka XAML przy tworzeniu aplikacji desktopowych?

A. Do zarządzania bazami danych
B. Do obsługi zdarzeń klawiatury
C. Do optymalizacji działania aplikacji
D. Do projektowania graficznego interfejsu użytkownika
Obsługa zdarzeń klawiatury jest realizowana za pomocą języków programowania, takich jak C# lub Java, a nie XAML, który służy głównie do definiowania struktury wizualnej interfejsu. Optymalizacja działania aplikacji to proces realizowany na poziomie kodu źródłowego i algorytmów, a nie w warstwie interfejsu użytkownika definiowanego przez XAML. Zarządzanie bazami danych jest domeną SQL lub innych języków zapytań, a nie XAML, który nie ma funkcji przechowywania ani manipulacji danymi bazodanowymi.

Pytanie 23

Jakie zagrożenie związane z użytkowaniem cyberprzestrzeni ma wpływ na zdrowie fizyczne?

A. Problemy z kręgosłupem wynikające z długotrwałego siedzenia
B. Rozpowszechnianie nieprawdziwych informacji
C. Depresja spowodowana cyberprzemocą
D. Uzależnienie od gier komputerowych
Wiesz, problemy z kręgosłupem przez zbyt długie siedzenie to naprawdę coś, na co trzeba zwrócić uwagę. To może prowadzić do bólu pleców, a nawet do wad postawy. Dobrze, że o tym mówimy! Fajnie jest robić przerwy na rozciąganie czy parę ćwiczeń. I pamiętaj, że ergonomiczne biurko i krzesło, które dobrze podpiera plecy, to klucz do zdrowia przy pracy z komputerem.

Pytanie 24

Jaką nazwę kontrolki powinno się umieścić w początkowej linii kodu, w miejscu <???, aby została ona wyświetlona w podany sposób?

Ilustracja do pytania
A. RatinoBar
B. SeekBar
C. Spinner
D. Switch
SeekBar to element interfejsu użytkownika, który pozwala użytkownikowi wybierać wartości w określonym przedziale, przeciągając uchwyt w lewo lub w prawo, co sprawia, że nadaje się do regulacji parametrów takich jak głośność czy jasność. Mimo że również jest to element interaktywny, jego użycie w kontekście binarnych decyzji byłoby niewłaściwe, ponieważ wymaga od użytkownika wyboru wartości w zakresie zamiast prostego włączania lub wyłączania. Spinner, z kolei, jest używany do prezentacji listy rozwijanej, z której użytkownik może wybrać jedną z dostępnych opcji. Jest to bardziej odpowiednie w kontekście, w którym jest wiele alternatyw do wyboru, a nie tylko dwa stany, jak w przypadku kontrolki Switch. RatinoBar wydaje się być literówką lub nieprawidłową nazwą, prawdopodobnie mylącą z RadioButton, który umożliwia wybór jednej opcji z grupy, podobnie jak Spinner, ale w zupełnie inny sposób. RadioButton nie posiada jednak mechanizmu przełączania w kontekście włączania i wyłączania funkcji, jak to ma miejsce w przypadku Switch. Zrozumienie różnic między tymi kontrolkami jest kluczowe dla projektowania intuicyjnych i efektywnych interfejsów użytkownika, a błędne przypisanie funkcjonalności może prowadzić do dezorientacji użytkownika i obniżenia jakości doświadczenia użytkownika w aplikacji.

Pytanie 25

Metoda tworzenia algorytmu polegająca na dzieleniu go na dwa lub więcej mniejszych podproblemów, aż do momentu, gdy ich rozwiązanie stanie się proste, jest techniką

A. komiwojażera
B. heurystyczną
C. najkrótszej ścieżki
D. dziel i zwyciężaj
Pierwsza odpowiedź, która nie jest poprawna, odnosi się do problemu najkrótszej ścieżki. To jest trochę inna bajka, bo mówimy tu o optymalizacji ścieżek w grafach. Algorytmy jak Dijkstra czy Bellman-Ford są super do wyznaczania najkrótszej drogi między węzłami, ale nie są oparte na zasadzie dziel i zwyciężaj. Praca z grafami wymaga zrozumienia całości struktury, a to różni się od lokalnego podejścia. Druga odpowiedź dotyczy problemu komiwojażera, który jest znany z tego, że to problem NP-trudny. Chodzi tu o znalezienie najkrótszej trasy, która odwiedza określone punkty, i chociaż można uciekać się do heurystyk, to nie jest to przykład tej strategii. Na końcu mamy odpowiedź związana z heurystyką, która używa różnych metod przybliżania, by szybko znaleźć jakieś sensowne rezultaty. Ale to też nie ma nic wspólnego z dzieleniem problemu na mniejsze kawałki. Generalnie, te podejścia różnią się od 'dziel i zwyciężaj', dlatego nie pasują do danego pytania.

Pytanie 26

Przyjmując, że opisana hierarchia klas właściwie odzwierciedla figury geometryczne i każda figura ma zdefiniowaną metodę do obliczania pola, to w której klasie można znaleźć deklarację metody liczPole()?

Ilustracja do pytania
A. trapez
B. trójkąt
C. figura
D. czworokąt
Metoda liczPole() znajduje się w klasie 'figura', ponieważ jest to klasa bazowa reprezentująca wspólne cechy dla wszystkich figur geometrycznych. Dziedziczenie tej metody przez klasy pochodne pozwala na zachowanie spójności kodu.

Pytanie 27

Jakie narzędzie umożliwia testowanie API w aplikacjach internetowych?

A. Microsoft Excel
B. Blender
C. Node.js
D. Postman
Blender to narzędzie do modelowania 3D i tworzenia animacji, które nie ma zastosowania w testowaniu API. Microsoft Excel jest programem do tworzenia arkuszy kalkulacyjnych i obliczeń, często wykorzystywanym w analizie danych, ale nie w testowaniu aplikacji webowych. Node.js to środowisko uruchomieniowe JavaScript, wykorzystywane do budowy aplikacji serwerowych, ale samo w sobie nie jest narzędziem do testowania API, choć może współpracować z Postmanem lub innymi narzędziami tego typu.

Pytanie 28

Jaką cechą charakteryzuje się sieć asynchroniczna?

A. Jest bardziej niezawodna od sieci synchronicznej
B. Wymaga synchronizacji zegarów
C. Dane są przesyłane jedynie w określonych przedziałach czasowych
D. Dane są przesyłane w sposób nieciągły, bez synchronizacji zegarów
Sieci asynchroniczne to rodzaj systemów komunikacyjnych, w których dane są przesyłane w sposób nieciągły, co oznacza, że nie wymagają one synchronizacji zegarów pomiędzy urządzeniami. W takich sieciach, każda jednostka przesyła dane w dowolnym momencie, co zwiększa elastyczność i efektywność komunikacji. Przykładem zastosowania sieci asynchronicznych są systemy oparte na protokołach, takich jak UART (Universal Asynchronous Receiver-Transmitter), które są powszechnie używane w mikrokomputerach oraz różnych urządzeniach elektronicznych. W kontekście standardów, sieci asynchroniczne są często stosowane w komunikacji szeregowej, gdzie dane są przesyłane bez ustalonych ram czasowych, co pozwala na redukcję opóźnień i zwiększenie przepustowości. W praktyce, taki model komunikacji jest idealny w sytuacjach, gdzie ciągłość przesyłu danych nie jest kluczowa, jak w przypadku transmisji danych z czujników czy urządzeń IoT, gdzie urządzenia mogą nadawać dane, gdy są gotowe, a nie w ustalonych interwałach czasowych.

Pytanie 29

W językach C++ bądź C# termin virtual można wykorzystywać w kontekście

A. metod klasy
B. destruktorów
C. funkcji zaprzyjaźnionych
D. atrybutów klasy
W językach C++ i C# słowo kluczowe 'virtual' można stosować do metod klasy, co umożliwia ich nadpisanie w klasach pochodnych. Pozwala to na implementację polimorfizmu, co jest kluczowym elementem programowania obiektowego.

Pytanie 30

Jaką komendę w języku C++ używa się do wielokrotnego uruchamiania tego samego bloku kodu?

A. while
B. switch
C. if
D. break
Instrukcja `while` w języku C++ i innych językach programowania pozwala na wielokrotne wykonanie tego samego fragmentu kodu, dopóki warunek logiczny jest spełniony. Przykład: `while (x < 10) { x++; }` będzie zwiększać zmienną `x` o 1, dopóki jej wartość nie osiągnie 10. Pętle `while` są przydatne, gdy liczba iteracji nie jest z góry znana i zależy od spełnienia określonego warunku w trakcie wykonywania programu.

Pytanie 31

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

Ilustracja do pytania
A. podzielne przez wartość zmiennej test.
B. parzyste.
C. podzielne przez wartość zmiennej check.
D. pierwsze.
Podzielność przez zmienną test lub check oznacza, że liczby są wielokrotnościami określonej wartości, ale niekoniecznie są liczbami pierwszymi. Liczby parzyste to liczby dzielące się przez 2, co oznacza, że tylko 2 jest liczbą pierwszą w tym zbiorze. Algorytmy wykrywające liczby parzyste lub wielokrotności nie są używane do znajdowania liczb pierwszych, ponieważ ich zakres i zastosowanie są zupełnie inne.

Pytanie 32

Jakie ma znaczenie "operacja wejścia" w kontekście programowania?

A. Zmiana wartości zmiennych globalnych
B. Przekazywanie danych do programu z zewnętrznych źródeł
C. Naprawianie błędów w kodzie aplikacji
D. Wprowadzanie nowych funkcji do aplikacji
Operacja wejścia w programowaniu polega na przekazywaniu danych do programu z zewnętrznego źródła, takiego jak klawiatura, plik lub strumień danych. W języku C++ typowym przykładem operacji wejścia jest `cin >> zmienna;`, która pobiera dane od użytkownika i przypisuje je do zmiennej. Operacje wejścia są niezbędne w interaktywnych aplikacjach, które wymagają danych od użytkownika w czasie rzeczywistym, umożliwiając dynamiczne przetwarzanie informacji.

Pytanie 33

Co to jest SPA (Single Page Application)?

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

Pytanie 34

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?

Ilustracja do pytania
A. trzy paragrafy, w każdym z nich tekst o treści: {tag}
B. jeden paragraf z pierwszym elementem tablicy tags
C. Trzy paragrafy, każdy odpowiadający kolejnemu elementowi tablicy tags
D. jeden paragraf zawierający wszystkie elementy tablicy tags w kolejności
Generowanie jednego paragrafu zawierającego wszystkie elementy tablicy nie pozwala na elastyczne formatowanie i stylizację każdego elementu osobno. Taka implementacja jest rzadziej stosowana, ponieważ ogranicza kontrolę nad poszczególnymi elementami interfejsu. Wyświetlanie tylko pierwszego elementu tablicy jest błędem logicznym i pomija pozostałe dane, co prowadzi do niepełnego wyświetlenia informacji. Wygenerowanie trzech paragrafów z identyczną treścią '{tag}' sugeruje błędne odwołanie do zmiennej, co oznacza, że iteracja została przeprowadzona nieprawidłowo lub że niepoprawnie użyto zmiennej w szablonie.

Pytanie 35

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:8080 (React) lub localhost:8000 (Angular)
C. localhost:3000 (React) lub localhost:4200 (Angular)
D. localhost:8000 (React) lub localhost:49887 (Angular)
Port 8080 jest często używany przez aplikacje serwerowe (np. Tomcat), a port 8000 przez narzędzia takie jak Django. Port 5001 jest rzadziej używany w tym kontekście. Domyślne porty dla React i Angular są standardem w dokumentacji i narzędziach deweloperskich tych frameworków.

Pytanie 36

Który z wymienionych algorytmów sortowania jest najskuteczniejszy w przypadku dużych zbiorów danych w przeważającej liczbie sytuacji?

A. Sortowanie przez wstawianie
B. Sortowanie szybkie (QuickSort)
C. Sortowanie bąbelkowe
D. Sortowanie przez zliczanie
QuickSort to algorytm sortowania, który jest najbardziej efektywny dla dużych zbiorów danych, osiągając średnią złożoność obliczeniową O(n log n). Wykorzystuje strategię 'dziel i zwyciężaj', co pozwala na szybkie podzielenie tablicy na mniejsze części wokół elementu zwanego pivotem. Dzięki temu QuickSort jest wyjątkowo szybki, nawet w przypadku dużych i losowo rozłożonych zbiorów danych. Jego zaletą jest niskie zużycie pamięci oraz możliwość sortowania w miejscu (in-place), co oznacza, że nie wymaga dodatkowej przestrzeni poza rekurencyjnym stosowaniem wywołań. Algorytm ten jest szeroko stosowany w aplikacjach bazodanowych, systemach operacyjnych i analizie danych.

Pytanie 37

Które z poniższych nie jest systemem kontroli wersji?

A. SVN
B. Mercurial
C. Git
D. MongoDB
Git, SVN i Mercurial to systemy kontroli wersji, które służą do śledzenia zmian w kodzie źródłowym aplikacji, co jest kluczowym aspektem współczesnego inżynierii oprogramowania. Te narzędzia pozwalają programistom na zarządzanie historią zmian, współpracę nad kodem oraz łatwe przywracanie wcześniejszych wersji, co jest niezwykle istotne w procesie tworzenia i utrzymania projektów. Wybierając Git, deweloperzy korzystają z rozproszonego modelu, który umożliwia każdemu użytkownikowi posiadanie pełnej kopii repozytorium na swoim lokalnym komputerze, co znacznie upraszcza proces rozwijania oprogramowania w zespołach zdalnych. SVN, z kolei, opiera się na centralnym modelu, co może być korzystne w określonych kontekstach, zwłaszcza w większych przedsiębiorstwach, gdzie kontrola dostępu do kodu źródłowego jest kluczowa. Mercurial podobnie jak Git oferuje rozproszoną architekturę, ale jego prostszy interfejs użytkownika sprawia, że jest bardziej intuicyjny dla nowych użytkowników. Błędem jest mylenie systemów baz danych z systemami kontroli wersji, co wynika z niepełnej wiedzy na temat ich podstawowych funkcji. Systemy kontroli wersji są niezbędne do zapewnienia efektywnej współpracy w zespołach programistycznych oraz do minimalizacji ryzyka utraty danych podczas pracy nad projektem, natomiast systemy baz danych koncentrują się na przechowywaniu i zarządzaniu informacjami.

Pytanie 38

W przypadku przedstawionych kodów źródłowych, które są funkcjonalnie równoważne, wartość, która zostanie zapisana w zmiennej b po wykonaniu operacji, to

Ilustracja do pytania
A. 5.96
B. 6
C. 596
D. 5
Różnice między językami programowania w obszarze typów danych mogą czasem wprowadzać w błąd. W Twoim przypadku, patrząc na liczbę 5.96, można by pomyśleć, że różne języki zaokrąglają liczby zmiennoprzecinkowe różnie. Ale w praktyce, w większości języków, jak Python czy C++, konwersja liczby zmiennoprzecinkowej na całkowitą poprzez rzutowanie lub funkcję int() po prostu odcina część dziesiętną. Wartość w zmiennej b staje się 5, nawet jeśli 5.96 wygląda bardziej jak 6. Często ludzie mylą rzutowanie z funkcjami zaokrąglającymi, które działają na innej zasadzie. Żeby zaokrąglić do najbliższej liczby całkowitej użyj funkcji takich jak round() w Pythonie czy Math.round() w Javie. Rozumienie tych różnic jest istotne, żeby później nie mieć problemów z błędami logicznymi, zwłaszcza przy arytmetyce, gdzie precyzja ma znaczenie. Dobrze jest używać rzutowania tylko wtedy, kiedy utrata precyzji nie jest problemem, bo w niektórych zastosowaniach, na przykład w finansach, wybór między rzutowaniem a zaokrąglaniem może naprawdę zmienić wynik.

Pytanie 39

W zaprezentowanym wideo przedstawiono narzędzie do tworzenia interfejsu użytkownika, dla którego automatycznie generuje się

A. kod Java
B. obsługa przycisku ekranu dotykowego
C. obsługa wciśniętego przycisku
D. kod XML
Kod Java jest generowany, ale nie bezpośrednio z kreatora interfejsu. Obsługa przycisków i ekranów dotykowych jest tworzona na poziomie logiki aplikacji i nie jest wynikiem samego kreatora interfejsu, który skupia się na warstwie wizualnej (UI).

Pytanie 40

W jakiej sytuacji wykorzystanie stosu będzie korzystniejsze niż lista podczas projektowania zestawu danych?

A. Gdy kolejność przetwarzania danych jest odwrócona (LIFO)
B. Gdy dane muszą być uporządkowane
C. Gdy chcemy usunąć element z końca
D. Gdy ważne jest szybkie znajdowanie elementów
Lista umożliwia liniowy dostęp do elementów i pozwala na dodawanie/usuwanie elementów w dowolnym miejscu, ale nie działa na zasadzie LIFO – dostęp do ostatniego elementu nie jest tak szybki jak w stosie. Kolejka działa zgodnie z zasadą FIFO (First In First Out), co oznacza, że elementy są przetwarzane w kolejności ich dodania, co jest odwrotnością stosu. Tablica dwuwymiarowa to struktura służąca do przechowywania danych w formie macierzy, umożliwiająca indeksowany dostęp, ale nie wspiera bezpośrednio operacji LIFO ani FIFO.