Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 8 maja 2025 09:49
  • Data zakończenia: 8 maja 2025 09:55

Egzamin niezdany

Wynik: 11/40 punktów (27,5%)

Wymagane minimum: 20 punktów (50%)

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

Celem zastosowania wzorca Obserwator w tworzeniu aplikacji WEB jest

A. informowanie obiektów o modyfikacji stanu innych obiektów
B. dostosowanie interfejsu użytkownika do różnych typów odbiorców
C. monitorowanie interakcji użytkownika i wysyłanie wyjątków
D. zarządzanie funkcjami synchronicznymi w kodzie aplikacji
Wzorzec Obserwator, znany również jako Observer, jest fundamentem programowania związanego z aplikacjami webowymi, szczególnie w kontekście architektury MVC (Model-View-Controller). Jego głównym celem jest umożliwienie obiektom (zwanym obserwatorami) subskrybowania zmian stanu innych obiektów (zwanych obserwowanymi). Kiedy stan obiektu obserwowanego ulega zmianie, wszystkie powiązane obiekty obserwujące są automatycznie powiadamiane o tej zmianie. Takie podejście jest szczególnie użyteczne w aplikacjach, gdzie interfejs użytkownika musi być dynamicznie aktualizowany w odpowiedzi na zmiany danych, na przykład w przypadku aplikacji do zarządzania danymi w czasie rzeczywistym. Przykładem może być aplikacja czatu, w której nowe wiadomości są automatycznie wyświetlane użytkownikom, gdy tylko są dodawane przez innych. Wzorzec ten jest również zgodny z zasadami SOLID, zwłaszcza z zasadą otwarte-zamknięte, umożliwiając rozwijanie aplikacji bez konieczności modyfikowania istniejących klas. W różnych technologiach webowych, takich jak JavaScript z użyciem frameworków takich jak React czy Angular, wzorzec Obserwator jest implementowany przez mechanizmy takie jak stany komponentów, co przyczynia się do lepszej organizacji kodu i zachowania jego czytelności.

Pytanie 2

Co to jest polimorfizm w programowaniu obiektowym?

A. Mechanizm ukrywania szczegółów implementacji przed zewnętrznymi klasami
B. Zdolność obiektów różnych klas do reagowania na tę samą metodę w sposób odpowiedni dla ich klasy
C. Zdolność klasy do posiadania wielu konstruktorów
D. Proces tworzenia nowej klasy na podstawie istniejącej
W programowaniu obiektowym pojawia się wiele koncepcji, które mogą być mylone z polimorfizmem, niemniej żadna z nich w pełni nie oddaje istoty tego pojęcia. Na przykład ukrywanie szczegółów implementacji, czyli enkapsulacja, to proces, który ma na celu zabezpieczenie danych obiektu przed nieautoryzowanym dostępem, ale nie ma związku z możliwością różnych klas do reagowania w ten sam sposób na jedną metodę. Z kolei dziedziczenie, które polega na tworzeniu nowej klasy na bazie istniejącej, to mechanizm, który pozwala na rozszerzanie funkcjonalności, ale wcale nie zapewnia, że obiekty klas dziedziczących będą miały tę samą metodę, ani że będą się zachowywały w sposób zgodny z polimorfizmem. Kolejnym błędnym podejściem jest myślenie, że polimorfizm odnosi się do posiadania wielu konstruktorów w tej samej klasie. Choć nadmiarowość konstruktorów jest ważna, to nie ma ona nic wspólnego z elastycznością obiektów i ich zdolnością do reagowania na te same metody. Zazwyczaj błędne rozumienie polimorfizmu wynika z niejasności w zakresie dziedziczenia i interfejsów, co może prowadzić do niepoprawnego projektowania systemów w programowaniu obiektowym. W praktyce polimorfizm oznacza, że obiekty różnych klas mogą być traktowane jako obiekty tej samej klasy, co jest istotne dla realizacji wielu wzorców projektowych.

Pytanie 3

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 ważne jest szybkie znajdowanie elementów
C. Gdy chcemy usunąć element z końca
D. Gdy dane muszą być uporządkowane
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.

Pytanie 4

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

A. przeprowadzane przez grupę docelowych użytkowników aplikacji
B. podzielone na testy dotyczące funkcjonalności, wydajności i skalowalności
C. realizowane przez zespół zatrudnionych testerów z Google
D. prowadzone w oparciu o dokument zawierający przypadki testowe
Testy funkcjonalne, wydajnościowe i skalowalności są przeprowadzane przez deweloperów lub profesjonalnych testerów, a nie użytkowników końcowych. Google nie zatrudnia bezpośrednio testerów do każdej aplikacji – odpowiedzialność za testy spoczywa na twórcach aplikacji.

Pytanie 5

Początkowym celem środowisk IDE takich jak: lntellij IDEA, Eclipse, NetBeans jest programowanie w języku

A. C#
B. Java
C. Python
D. C++
Środowiska IDE, takie jak IntelliJ IDEA, Eclipse oraz NetBeans, zostały zaprojektowane z myślą o programowaniu w języku Java, który jest jednym z najpopularniejszych języków programowania na świecie. Te zintegrowane środowiska deweloperskie oferują szereg narzędzi i funkcji, które znacznie ułatwiają proces tworzenia aplikacji w Java. Przykładowo, IntelliJ IDEA, stworzony przez firmę JetBrains, dostarcza wsparcie dla automatycznego uzupełniania kodu, refaktoryzacji oraz analizy statycznej, co przyspiesza cykl rozwoju oprogramowania. Eclipse, będący otwartym oprogramowaniem, umożliwia rozszerzanie swoich funkcji poprzez wtyczki, co czyni go elastycznym narzędziem dla programistów. NetBeans, z kolei, zapewnia łatwe w użyciu interfejsy oraz wsparcie dla wielu technologii związanych z Java, takich jak JavaFX czy Java EE, co czyni go idealnym wyborem dla rozwoju aplikacji webowych i desktopowych. Zgodnie z przyjętymi standardami w branży, Java jest językiem obiektowym, który charakteryzuje się wysoką przenośnością oraz bezpieczeństwem, co czyni go atrakcyjnym wyborem dla wielu projektów komercyjnych oraz edukacyjnych.

Pytanie 6

Na podstawie definicji zamieszczonej w ramce, wskaż, który z rysunków ilustruje komponent Chip zdefiniowany w bibliotece Angular Material?

Ilustracja do pytania
A. Rysunek 3
B. Rysunek 2
C. Rysunek 1
D. Rysunek 4
Komponent Chip w bibliotece Angular Material to interaktywny element, który reprezentuje fragment informacji, tag lub wybór. Może zawierać tekst, ikonę lub być klikalny, co czyni go niezwykle użytecznym w projektowaniu nowoczesnych interfejsów użytkownika. Komponenty tego typu często wykorzystywane są w formularzach lub systemach tagowania, umożliwiając użytkownikowi intuicyjne dodawanie lub usuwanie elementów. Wyróżnia się swoją minimalistyczną formą i możliwością dostosowania do różnych potrzeb projektowych.

Pytanie 7

Dlaczego w wyniku działania tego kodu w języku C++ na ekranie pojawiła się wartość O zamiast 50?

Ilustracja do pytania
A. Argument funkcji został przekazany przez wartość, a nie przez referencję
B. Niepoprawnie zdefiniowano działanie wewnątrz funkcji
C. Funkcja zwraca wartość, chociaż nie powinna jej zwracać
D. Zmienna x powinna być inicjowana wartością równą 1, a nie O
Błąd związany z przekazywaniem argumentu przez wartość, a nie przez referencję, to klasyka w C++. W tym kodzie zmienna x idzie jako kopia, więc zmiany w oblicz nie wpływają na oryginał w main. Może popełniłeś błąd, bo nie do końca rozumiesz różnicę między tymi dwoma metodami. Te inne odpowiedzi wskazują na różne problemy, jak źle zainicjowana zmienna czy błędy w zwracaniu wartości. Ale w oblicz wszystko powinno działać poprawnie, bo zwraca wartość typu int, a problem leży w tym, że przekazujesz kopię argumentu. Warto pamiętać, że poprawny kod wymaga sensownego przepływu wartości między funkcjami i zrozumienia, że x w main nie zmienia się, bo modyfikujesz kopię. Często mylimy to i myślimy, że zmiany w funkcji wpływają na oryginały, a w C++ musisz użyć referencji albo wskaźników, żeby to zadziałało. Zrozumienie tego jest kluczowe, żeby dobrze ogarniać funkcje w C++ i unikać takich problemów w przyszłości.

Pytanie 8

Którą funkcję w C++ można zastosować do dynamicznego przydzielania pamięci dla tablicy?

A. delete[]
B. free()
C. malloc()
D. sizeof()
Funkcja 'free()' służy do zwalniania pamięci zaalokowanej dynamicznie przez 'malloc()', ale nie alokuje pamięci. Funkcja 'sizeof()' zwraca rozmiar typu lub obiektu, ale nie alokuje pamięci dynamicznie – jest wykorzystywana do określania ilości pamięci potrzebnej dla danego typu. 'Delete[]' jest operatorem w C++, który usuwa tablicę dynamicznie zaalokowaną przy użyciu 'new[]', ale nie alokuje pamięci – jest to mechanizm zwalniania pamięci, a nie jej przydzielania.

Pytanie 9

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

A. Gantta
B. Venna
C. związków encji
D. aktywnosci UML
Diagram Venna służy do przedstawiania relacji pomiędzy zbiorami, a nie harmonogramów. Diagram związków encji modeluje relacje w bazach danych, co nie jest związane z zarządzaniem czasem i zadaniami. Diagram aktywności UML opisuje przepływ działań w systemie, ale nie służy do monitorowania harmonogramu i zadań zespołu.

Pytanie 10

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

console.log(typeof null); console.log(typeof undefined); console.log(typeof []); console.log(typeof NaN);

A. object, undefined, array, number
B. object, undefined, object, number
C. null, undefined, array, number
D. null, undefined, object, NaN
Wynikowy wyraz z konsoli, czyli 'object, undefined, object, number' jest zgodny z zachowaniem typu danych w JavaScript. Funkcja typeof zwraca typ zmiennej, a w przypadku null to zaskakujący wynik, bo według standardów ECMAScript, null jest traktowane jako obiekt. To historyczny błąd w języku, który z biegiem czasu się utrzymał. Z kolei undefined oznacza, że zmienna nie została przypisana, co jest jasne i zrozumiałe. Jeśli chodzi o tablice, w JavaScript są one traktowane jako obiekty, dlatego wynik typeof dla pustej tablicy również to pokazuje. NaN, będące skrótem od 'Not-a-Number', jest szczególnym przypadkiem, który wskazuje, że coś poszło nie tak z operacją arytmetyczną. Jego typ to number, ponieważ w JavaScript wszystko jest na poziomie liczbowym. Wiedza na temat typów danych jest kluczowa w programowaniu, szczególnie przy pracy z danymi i funkcjami, które oczekują konkretnego typu. Użycie typeof jest bardzo praktyczne, gdy chcemy dynamicznie zarządzać typami w kodzie.

Pytanie 11

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

A. Lista zasobów ludzkich
B. Diagram Gantta
C. Specyfikacja techniczna
D. Product backlog
Product backlog to taki ważny dokument w Scrumie, właściwie to serce całego projektu. Zawiera listę funkcji, które chcemy mieć w produkcie, a wszystko to jest poukładane według tego, co jest najważniejsze. Fajnie, że ten dokument jest żywy – zmienia się w miarę jak rozwija się projekt i dostajemy nowe info od klienta. Dzięki temu zespół może się skupić na tym, co naprawdę ma znaczenie, a to sprawia, że dostarczamy wartość w rytm iteracji. Ta elastyczność backlogu to mega atut, bo pozwala na szybkie reagowanie na zmiany w wymaganiach, a to w dzisiejszym świecie projektowym jest kluczowe.

Pytanie 12

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

Ilustracja do pytania
A. pierwsze.
B. parzyste.
C. podzielne przez wartość zmiennej check.
D. podzielne przez wartość zmiennej test.
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 13

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 chcemy uzyskać dostęp do elementów przy pomocy indeksu
D. Gdy liczba elementów w kolekcji zmienia się dynamicznie
Tablica jest bardziej efektywna, gdy liczba elementów jest stała, ponieważ umożliwia szybki dostęp do elementów za pomocą indeksów. Jednak tablice mają ograniczoną elastyczność – ich rozmiar musi być znany na etapie kompilacji lub inicjalizacji. Gdy liczba elementów jest dynamiczna, tablice mogą prowadzić do nadmiernego wykorzystania pamięci lub jej braku. Dostęp do elementów przez indeks działa wydajnie w tablicach, ale w przypadku częstych operacji dodawania lub usuwania elementów jest mniej efektywny. Znajomość dokładnego rozmiaru kolekcji przed kompilacją czyni tablice bardziej odpowiednimi dla z góry określonych danych.

Pytanie 14

Jakie aspekty powinny być brane pod uwagę przy tworzeniu struktury danych dla aplikacji?

A. Nie ma związku pomiędzy strukturą danych a efektywnością aplikacji
B. Tylko wymagania sprzętowe
C. Tylko typ języka programowania
D. Złożoność obróbki danych oraz ich efektywną organizację
Wyłączne uwzględnienie typu języka programowania nie jest wystarczające, ponieważ to struktura danych, a nie język, wpływa na efektywność przetwarzania informacji. Skupienie się jedynie na wymaganiach sprzętowych pomija znaczenie optymalizacji algorytmów i organizacji danych. Twierdzenie, że struktura danych nie wpływa na wydajność aplikacji, jest błędne, ponieważ odpowiednie zarządzanie danymi jest kluczowe dla osiągnięcia wysokiej wydajności i skalowalności.

Pytanie 15

Który z warunków logicznych weryfikuje, czy zmienna całkowita x jest dodatnią liczbą składającą się z dwóch cyfr i jest podzielna przez 4?

A. (x > 0 && x < 100) || (x / 4 == 0)
B. (x > 9 && x < 100) || (x % 4 == 0)
C. (x > 9 || x < 100) && (x / 4 == 0)
D. (x > 9 && x < 100) && (x % 4 == 0)
Warunek z operatorem || (lub) nie zapewnia dokładnej kontroli zakresu i podzielności, co prowadzi do nieprawidłowych wyników. Operacje dzielenia, np. (x / 4 == 0), zamiast operatora modulo, są błędne, ponieważ wynik dzielenia całkowitego nie wykrywa reszty. Sprawdzenie wyłącznie zakresu, bez uwzględnienia podzielności, nie spełnia warunku zadania.

Pytanie 16

Jakie z wymienionych czynności może zagrażać cyfrowej tożsamości?

A. Cykliczna zmiana haseł do kont
B. Tworzenie unikalnych oraz mocnych haseł
C. Aktywacja uwierzytelniania dwuskładnikowego
D. Klikanie w podejrzane linki w wiadomościach e-mail
Ustawianie unikalnych i silnych hasł chroni konta przed nieautoryzowanym dostępem, ale samo w sobie nie zabezpiecza przed klikaniem w złośliwe linki. Regularne zmienianie haseł do kont to dobra praktyka, jednak nie chroni przed phishingiem, który atakuje użytkownika bezpośrednio. Włączenie uwierzytelniania dwuskładnikowego (2FA) zwiększa poziom bezpieczeństwa, ale nie eliminuje ryzyka wynikającego z nieostrożnego klikania w podejrzane linki.

Pytanie 17

Która z poniższych technik NIE jest związana z optymalizacją wydajności strony internetowej?

A. Lazy loading
B. Minifikacja kodu
C. Użycie CDN
D. Deep linking
Minifikacja kodu, lazy loading i użycie CDN to techniki ściśle związane z optymalizacją wydajności stron internetowych. Minifikacja kodu polega na usuwaniu zbędnych znaków, takich jak spacje, komentarze czy nowe linie, co skutkuje zmniejszeniem rozmiaru plików CSS i JavaScript. Dzięki temu przeglądarki mogą szybciej pobierać i interpretować skrypty, co bezpośrednio wpływa na czas ładowania strony. Z kolei lazy loading to technika, która polega na opóźnionym ładowaniu obrazów i innych zasobów, co pozwala na szybsze przekazywanie pierwszej wersji strony użytkownikowi. Tylko zasoby, które są aktualnie widoczne w oknie przeglądarki, są ładowane na początku, co zmniejsza obciążenie serwera oraz przyspiesza renderowanie strony. Użycie CDN (Content Delivery Network) z kolei polega na rozproszeniu treści na serwerach rozmieszczonych geograficznie, co umożliwia użytkownikom dostęp do zasobów z najbliższej lokalizacji, co także przyspiesza ładowanie strony. Zrozumienie tych technik jest kluczowe, ponieważ ich wdrażanie może znacząco poprawić wskaźniki wydajności, a tym samym satysfakcję użytkowników. Ignorowanie tych metod optymalizacji może prowadzić do długich czasów ładowania i niezadowolenia użytkowników, co w dłuższym okresie może wpływać na konwersje i ogólną reputację strony.

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. 4 osoby
C. 1 osobę
D. 2 osoby
Diagram Gantta przedstawia harmonogram projektu, gdzie poszczególne zadania są przypisane do konkretnych dni. W sytuacji, gdy każdy członek zespołu jest w stanie wykonać dowolne zadanie, minimalna liczba osób potrzebna do realizacji projektu to liczba równoczesnych zadań w najbardziej wymagającym momencie. Kluczowe jest tu równomierne rozłożenie pracy i unikanie przestojów, co zapewnia efektywne wykorzystanie zasobów.

Pytanie 19

Jak najlepiej przełożyć oczekiwania klienta na dokumentację techniczną dla programistów?

A. Opracowując wizualne makiety bez dokładnych opisów
B. Tworząc szczegółowy dokument z funkcjami oraz wymaganiami technicznymi
C. Pomijając szczegółowe wymagania techniczne
D. Rozmawiając wyłącznie z zespołem programistów
Prowadzenie rozmów wyłącznie z zespołem programistów ogranicza perspektywę projektu i pomija kluczowe informacje dostarczone przez klienta. Tworzenie wyłącznie wizualnych makiet bez szczegółowych opisów prowadzi do niedomówień i niejasności w zakresie funkcjonalności aplikacji. Pomijanie szczegółowych wymagań technicznych zwiększa ryzyko, że produkt końcowy nie spełni oczekiwań użytkowników ani nie będzie zgodny z założeniami klienta.

Pytanie 20

Co to jest Docker?

A. System zarządzania bazami danych
B. Framework JavaScript do tworzenia aplikacji mobilnych
C. Platforma do tworzenia, wdrażania i uruchamiania aplikacji w kontenerach
D. Narzędzie do automatyzacji procesu tworzenia dokumentacji
Chociaż odpowiedzi wskazujące na system zarządzania bazami danych, framework JavaScript oraz narzędzie do automatyzacji dokumentacji mogą wydawać się na pierwszy rzut oka przekonywujące, to w rzeczywistości są one dalekie od prawdy. System zarządzania bazami danych odnosi się do oprogramowania, które służy do przechowywania i zarządzania danymi, jak MySQL czy PostgreSQL, ale nie ma nic wspólnego z konteneryzacją aplikacji. Framework JavaScript, jak React czy Angular, jest narzędziem do budowania interfejsów użytkownika, a nie do zarządzania środowiskiem uruchomieniowym aplikacji. Z kolei narzędzia do automatyzacji dokumentacji, takie jak Sphinx czy JSDoc, koncentrują się na generowaniu dokumentacji technicznej z kodu źródłowego, co również nie ma związku z konteneryzacją. Wiele osób myli te pojęcia z Dockerem przez brak znajomości architektury aplikacji oraz sposobu, w jaki są one wdrażane w nowoczesnym środowisku IT. Konteneryzacja pozwala na izolację aplikacji i ich zależności, co jest kluczowe dla zapewnienia stabilności i spójności w różnych środowiskach, co nie jest celem wspomnianych odpowiedzi. Aby lepiej zrozumieć funkcję Dockera, warto zaznajomić się z koncepcjami związanymi z wirtualizacją oraz zarządzaniem środowiskami deweloperskimi, co pomoże uniknąć tego typu nieporozumień w przyszłości.

Pytanie 21

Jaki będzie wynik działania poniższego kodu w języku Java?

String a = "hello"; String b = "hello"; String c = new String("hello"); System.out.println(a == b); System.out.println(a == c); System.out.println(a.equals(c));

A. true, false, false
B. true, false, true
C. false, false, true
D. true, true, true
Wyniki, które wskazują, że zarówno porównanie 'a == c', jak i 'a.equals(c)' powinny zwracać 'true', opierają się na błędnym zrozumieniu, jak działa porównywanie obiektów w Javie. Warto zrozumieć, że operator '==' sprawdza, czy dwie referencje wskazują na ten sam obiekt w pamięci. W przypadku zmiennych 'a' i 'b', ponieważ obie są literałami tego samego ciągu, JVM optymalizuje ich przechowywanie, co skutkuje, że obie referencje prowadzą do tego samego obiektu. Natomiast zmienna 'c', utworzona za pomocą 'new String()', to zupełnie inny obiekt, mimo że jego wartość jest taka sama jak w 'a'. W związku z tym porównanie 'a == c' zwraca false. Z kolei metoda 'equals()' jest zaprojektowana do porównania wartości, a nie referencji, co oznacza, że 'a.equals(c)' zwróci true, ponieważ obie zmienne mają tę samą zawartość. Zrozumienie tych zasad jest kluczowe, aby unikać typowych pułapek przy pracy z obiektami w Javie. Pamiętaj, aby zawsze preferować 'equals()' do porównywania stringów i innych obiektów, aby uzyskać prawidłowe wyniki.”

Pytanie 22

Jakie obliczenia można wykonać za pomocą poniższego algorytmu, który operuje na dodatnich liczbach całkowitych?

Ilustracja do pytania
A. liczbę cyfr w wprowadzonej liczbie
B. sumę cyfr wprowadzonej liczby
C. sumę wprowadzonych liczb
D. największy wspólny dzielnik wprowadzonej liczby
Sumowanie cyfr wymaga dodatkowej operacji dodawania reszt z dzielenia przez 10, czego ten algorytm nie wykonuje. Największy wspólny dzielnik oblicza się zupełnie innymi metodami, np. algorytmem Euklidesa. Sumowanie wczytanych liczb odnosi się do iteracyjnego dodawania kolejnych wartości, co nie jest częścią przedstawionego algorytmu.

Pytanie 23

W programie stworzonym w języku C++ trzeba zadeklarować zmienną, która będzie przechowywać wartość rzeczywistą. Jakiego typu powinna być ta zmienna?

A. double
B. numeric
C. int
D. number
Typ 'int' przechowuje liczby całkowite, co czyni go nieodpowiednim do przechowywania liczb zmiennoprzecinkowych. Typ 'number' nie jest prawidłowym typem danych w C++. 'Numeric' nie jest natywnym typem w C++, a jego użycie może prowadzić do błędów kompilacji.

Pytanie 24

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

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

Jakie czynności należy wykonać, aby zrealizować zdarzenie kliknięcia na przycisk w aplikacji desktopowej?

A. Zmienić plik XAML
B. Powiązać zdarzenie kliknięcia z odpowiednią metodą w kodzie
C. Utworzyć metodę w systemie menu
D. Zaprojektować nowy dialog modalny
Zdefiniowanie metody w systemie menu odnosi się do tworzenia funkcji wywoływanych z poziomu rozwijanego menu aplikacji, a nie do obsługi kliknięcia przycisku. Tworzenie nowego dialogu modalnego to działanie polegające na wyświetlaniu okien dialogowych, a nie obsłudze zdarzeń kliknięcia. Modyfikacja pliku XAML pozwala na zmiany w wyglądzie i strukturze interfejsu użytkownika, ale sama w sobie nie obsługuje zdarzeń – XAML definiuje UI, natomiast logika zdarzeń implementowana jest w językach takich jak C# lub VB.NET.

Pytanie 26

Jakie z wymienionych narzędzi jest szeroko stosowane do debugowania aplikacji internetowych?

A. Chrome DevTools
B. Blender
C. Git
D. Postman
Git jest systemem kontroli wersji, który pomaga zarządzać kodem źródłowym i śledzić zmiany, ale nie służy do debugowania aplikacji webowych. Postman to narzędzie do testowania API, które pozwala na wysyłanie zapytań HTTP, ale nie umożliwia debugowania interfejsów webowych ani modyfikacji DOM. Blender jest narzędziem do modelowania 3D i animacji, nie mającym związku z debugowaniem aplikacji webowych.

Pytanie 27

Które z poniższych NIE jest typem wartości zwracanej przez funkcję w języku JavaScript?

A. Undefined
B. Object
C. Number
D. Method
Wybór odpowiedzi związanej z 'Method' jako typem wartości zwracanej przez funkcję w JavaScript może wynikać z nieporozumienia dotyczącego różnicy pomiędzy funkcją a metodą. Warto wiedzieć, że w JavaScript funkcje są obiektami pierwszej klasy, co oznacza, że mogą być przypisywane do zmiennych, przekazywane jako argumenty oraz zwracane z innych funkcji. Wśród typów wartości, które mogą być zwracane przez funkcje, znajdują się obiekty, liczby, stringi oraz typ undefined, co jest wynikiem zachowań typowych dla tego języka. Kiedy funkcja nie zwraca żadnej wartości, domyślnie zwraca undefined. Typowe błędy myślowe pojawiają się, gdy programiści mylą koncepcje funkcji i metod lub mylą pojęcia typów danych. Często mogą założyć, że metoda jest równoważna typowi zwracanemu, co nie jest zgodne z definicjami w programowaniu obiektowym. Obiekt w JavaScript może mieć wiele metod, które są funkcjami, ale to nie czyni metody typem zwracanym. Przykładem tego może być zdefiniowanie obiektu z wieloma funkcjami, które działają na jego danych. To jasno pokazuje, że metody są połączeniem funkcji z obiektami, a nie typami wartości. Ważne jest, aby podczas nauki języka JavaScript skupić się na zrozumieniu struktury języka oraz jego zasad, co pomoże unikać zamieszania związanych z terminologią oraz zastosowaniem tych koncepcji w praktyce.

Pytanie 28

Który z wymienionych frameworków służy do budowy aplikacji webowych w C#?

A. ASP.NET Core
B. Angular
C. React.js
D. Django
Django to framework dla języka Python, który nie jest związany z ekosystemem C#. Angular to framework frontendowy oparty na TypeScript, używany do tworzenia interfejsów użytkownika, ale nie pełni roli backendowego frameworka webowego w C#. React.js to biblioteka JavaScript dedykowana budowie dynamicznych komponentów frontendowych i nie jest wykorzystywana do budowy backendowych aplikacji w C#.

Pytanie 29

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

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

Pytanie 30

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

A. zespół suchego oka
B. dyskopatia
C. zespół cieśni kanału nadgarstka
D. kifoza
Zespół cieśni kanału nadgarstka to schorzenie występujące często u programistów i innych osób pracujących przy komputerze. Objawia się bólem, mrowieniem i drętwieniem palców, co wynika z ucisku nerwu pośrodkowego w nadgarstku. Długotrwałe korzystanie z klawiatury i myszy bez ergonomicznych przerw może prowadzić do tego schorzenia. Profilaktyka obejmuje ćwiczenia rozciągające, stosowanie ergonomicznych urządzeń oraz regularne przerwy w pracy.

Pytanie 31

Co to jest JWT (JSON Web Token)?

A. Protokół komunikacji między frontendem a backendem
B. Biblioteka JavaScript do manipulacji danymi JSON
C. Format przechowywania danych w bazach NoSQL
D. Otwarty standard do bezpiecznego przekazywania informacji między stronami jako obiekt JSON
JWT, czyli JSON Web Token, to otwarty standard (RFC 7519), który definiuje sposób bezpiecznego przekazywania informacji między stronami jako obiekt JSON. Głównym celem JWT jest zapewnienie autoryzacji i integralności danych. Token składa się z trzech części: nagłówka, ładunku i podpisu. Nagłówek określa algorytm użyty do podpisu, ładunek zawiera dane użytkownika (np. identyfikator, role), a podpis umożliwia weryfikację, że token nie został zmieniony po jego wydaniu. Dzięki tej strukturze JWT jest popularny w aplikacjach webowych, gdzie użytkownicy muszą być autoryzowani w różnych sekcjach aplikacji. Praktycznym zastosowaniem JWT jest autoryzacja API, gdzie serwery mogą weryfikować tożsamość użytkowników na podstawie tokenów przesyłanych w nagłówkach HTTP, co zwiększa bezpieczeństwo i elastyczność w komunikacji między systemami. Warto podkreślić, że JWT powinny być używane zgodnie z najlepszymi praktykami, takimi jak stosowanie HTTPS, aby chronić dane przed przechwyceniem, oraz regularne odnawianie tokenów, aby zminimalizować ryzyko ich wykorzystywania przez osoby nieuprawnione.

Pytanie 32

Podczas programowania kontrolki stepper przedstawionej na ilustracji w aplikacji mobilnej, należy zarządzać zmienną, która zawsze przechowuje jej bieżącą wartość. Jakie zdarzenie można wykorzystać do osiągnięcia tej funkcjonalności?

Ilustracja do pytania
A. DescendantAdded
B. SizeChanged
C. ValueChanged
D. Unfocused
Pierwsza z niepoprawnych odpowiedzi DescendantAdded odnosi się do zdarzenia używanego w kontekście hierarchii widoków. To zdarzenie jest uruchamiane, gdy do elementu wizualnego dodany zostaje nowy element podrzędny. Nie ma ono żadnego związku z obsługą zmiany wartości w kontrolkach takich jak stepper, a jego zastosowanie w tym kontekście byłoby nieadekwatne. Zdarzenie Unfocused jest wywoływane, gdy element traci fokus, czyli przestaje być aktywnym elementem interfejsu. Zdarzenie to może być użyteczne w sytuacjach, gdzie konieczne jest zapisanie stanu po opuszczeniu pola tekstowego, ale nie ma zastosowania w kontekście dynamicznego zarządzania wartością steppera. Wreszcie SizeChanged jest zdarzeniem, które występuje, gdy zmienia się rozmiar elementu wizualnego. Może być przydatne w adaptacyjnym projektowaniu interfejsów, ale nie wpływa na logikę aplikacji dotyczącą aktualizacji wartości steppera. Częstym błędem jest mylenie zdarzeń dotyczących interfejsu z tymi, które obsługują logikę biznesową, co prowadzi do niepoprawnego zastosowania w kontekście dynamicznych interakcji z użytkownikiem. Zrozumienie specyfiki każdego zdarzenia i jego poprawnego kontekstu użycia jest kluczowe dla prawidłowego projektowania aplikacji interaktywnych.

Pytanie 33

Co to jest git rebase?

A. Narzędzie do rozwiązywania konfliktów między plikami
B. Metoda tworzenia kopii zapasowej repozytorium
C. Polecenie do tworzenia nowego repozytorium
D. Technika integracji zmian z jednej gałęzi do drugiej przez przeniesienie lub połączenie sekwencji commitów
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 34

Jaką rolę pełni element statyczny w klasie?

A. Automatycznie likwiduje obiekty klasy po zakończeniu działania programu
B. Zachowuje wspólną wartość dla wszystkich instancji tej klasy
C. Pozwala na dynamiczne dodawanie nowych metod
D. Ogranicza dostęp do metod publicznych w klasie
Dynamiczne tworzenie nowych metod to zadanie metaprogramowania lub refleksji, a nie funkcjonalność składników statycznych. Ograniczenie dostępu do metod publicznych jest realizowane za pomocą modyfikatorów dostępu, takich jak 'private' czy 'protected', a nie przez składniki statyczne. Automatyczne usuwanie obiektów klasy jest zadaniem destruktora i mechanizmu garbage collection (GC), a nie cechą składnika statycznego.

Pytanie 35

Która z wymienionych właściwości najlepiej charakteryzuje biblioteki dynamiczne?

A. Zawierają kod źródłowy aplikacji
B. Są ładowane podczas kompilacji
C. Są ładowane w trakcie działania aplikacji
D. Są statycznie dołączane do pliku wykonywalnego
Jak mówimy o ładowaniu bibliotek w czasie kompilacji, to mamy na myśli biblioteki statyczne. One są wplecione w plik wykonywalny. Z kolei biblioteki dynamiczne, to jakby zewnętrzne funkcje, które nie są częścią źródłowego kodu programu. Przy statycznym dołączaniu wszelkie potrzebne zasoby są w jednym pliku, a to odróżnia je od tych dynamicznych, które wchodzą w grę dopiero, gdy program działa.

Pytanie 36

Działania przedstawione w filmie korzystają z narzędzia

A. generatora kodu java
B. kompilatora dla interfejsu graficznego
C. debuggera analizującego wykonujący kod
D. generatora GUI przekształcającego kod do języka XAML
Debugger analizuje wykonywany kod, ale nie zajmuje się tworzeniem interfejsów graficznych. Kreator kodu Java jest narzędziem wspomagającym generowanie kodu aplikacji, a nie GUI. Kompilator interfejsu graficznego odpowiada za przekształcanie gotowego kodu, ale nie za tworzenie interaktywnych elementów wizualnych w czasie rzeczywistym.

Pytanie 37

Sposób deklaracji Klasa2 wskazuje, że

Ilustracja do pytania
A. Klasa1 dziedziczy od Klasa2
B. Klasa2 dziedziczy od Klasa1
C. Klasa2 stanowi klasę bazową
D. Klasa1 jest dzieckiem Klasy2
Twierdzenie, że Klasa1 dziedziczy po Klasa2, jest błędne – dziedziczenie w językach takich jak C++, Java czy Python odbywa się tylko w jednym kierunku, od klasy bazowej do klasy pochodnej. Klasa1 nie może być potomkiem Klasa2, jeśli w deklaracji wskazano odwrotnie. Deklaracja, że Klasa2 jest klasą bazową, byłaby prawdziwa tylko w przypadku, gdyby Klasa1 faktycznie dziedziczyła po Klasa2, co nie wynika z przedstawionego kodu. Dziedziczenie jest relacją jednoznaczną i kierunkową, co oznacza, że błędne zrozumienie tej koncepcji może prowadzić do poważnych problemów architektonicznych w projekcie.

Pytanie 38

W pokazanych fragmentach kodu zdefiniowano funkcję pod nazwą fun1. W tej funkcji należy zaimplementować obsługę

Ilustracja do pytania
A. usunięcia kontrolek z pamięci RAM
B. naciśnięcia przycisku zatwierdzającego dialog
C. inicjacji elementów interfejsu użytkownika
D. aplikacji po wystąpieniu zdarzenia utraty focusa przez pole opcji
Obsługa zdarzeń utraty focusa dotyczy pól tekstowych i formularzy, a nie przycisków zatwierdzających dialog. Inicjalizacja elementów interfejsu użytkownika jest wykonywana na etapie ładowania aplikacji, a nie w odpowiedzi na interakcję z przyciskiem. Usuwanie kontrolek z pamięci jest ważnym elementem zarządzania zasobami, ale nie ma związku z obsługą zdarzeń przycisków dialogowych. Każda z tych operacji dotyczy innego etapu cyklu życia aplikacji i nie odnosi się bezpośrednio do zatwierdzania danych przez użytkownika.

Pytanie 39

Jakie są typowe frameworki/biblioteki używane w aplikacjach webowych?

A. ASP.NET Core, jQuery, Joomla!, Wordpress, Angular
B. jquery, Joomla!, Wordpress, android Studio, Xamarin
C. ASP.NET Core, Django, Angular, React.js, Node.js
D. Visual Studio, Eclipse, angular, React.js, Node.js
Frameworki i biblioteki typowe dla aplikacji webowych to ASP.NET Core, Django, Angular, React.js i Node.js. Umożliwiają one tworzenie dynamicznych aplikacji front-end i back-end, zapewniając szeroką funkcjonalność, skalowalność oraz obsługę nowoczesnych technologii webowych.

Pytanie 40

Która z wymienionych bibliotek pozwala na obsługę zdarzeń związanych z myszą w aplikacjach desktopowych?

A. TensorFlow
B. Numpy
C. Qt
D. Django
Numpy to biblioteka do obliczeń numerycznych w języku Python i nie posiada narzędzi do obsługi zdarzeń graficznych w aplikacjach desktopowych. Django to framework do budowy aplikacji webowych w Pythonie, koncentrujący się na backendzie, a nie na tworzeniu GUI czy interakcji z myszą. TensorFlow to biblioteka do uczenia maszynowego i przetwarzania danych, nieprzystosowana do tworzenia aplikacji desktopowych obsługujących zdarzenia myszki i klawiatury.