Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 12 maja 2025 12:35
  • Data zakończenia: 12 maja 2025 13:18

Egzamin zdany!

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

Wymagane minimum: 20 punktów (50%)

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

Co to jest wzorzec projektowy Singleton?

A. Wzorzec do zarządzania komunikacją między komponentami aplikacji
B. Wzorzec zapewniający istnienie tylko jednej instancji klasy w całej aplikacji
C. Metoda zabezpieczania aplikacji przed atakami typu SQL Injection
D. Technika optymalizacji kodu poprzez minimalizację liczby obiektów
Wzorzec projektowy Singleton to jeden z fundamentalnych wzorców, który zapewnia, że w trakcie działania aplikacji istnieje tylko jedna instancja danej klasy. Przydaje się to w sytuacjach, gdy musimy zarządzać zasobami, które nie powinny być wielokrotnie instancjonowane, na przykład połączenia z bazą danych czy logika globalnych ustawień. Implementacja tego wzorca zakłada zastosowanie prywatnego konstruktora oraz metody statycznej, która odpowiada za utworzenie instancji. Przykładem zastosowania Singletona mogą być klasy zarządzające konfiguracją aplikacji, gdzie zmiana w jednym miejscu może wpłynąć na cały system. Często jest on krytykowany za to, że wprowadza globalny stan, co może prowadzić do trudności w testowaniu i zarządzaniu stanem aplikacji. Dlatego ważne jest, aby stosować go świadomie i tam, gdzie rzeczywiście przynosi korzyści, zgodnie z najlepszymi praktykami inżynieryjnymi.

Pytanie 2

Jakie będą skutki wykonania podanego fragmentu kodu w języku C++?

Ilustracja do pytania
A. do tablicy liczby, na jej końcu, dodawane są nowe wartości
B. do tablicy liczby, na jej początku, dodawane są nowe wartości
C. z tablicy liczby usuwane są elementy, z każdym obiegiem pętli eliminowany jest element z jej końca
D. z tablicy liczby usuwane są elementy, z każdym obiegiem pętli eliminowany jest element z jej początku
Usuwanie elementów z początku tablicy wymaga zastosowania mechanizmu przesunięcia pozostałych elementów, co nie jest częścią tego kodu. Usuwanie elementów z końca tablicy wymaga użycia funkcji pop_back() lub podobnych metod, ale nie jest to pokazane w tym fragmencie kodu. Dodawanie elementów na początku tablicy wymaga użycia funkcji insert() lub innego mechanizmu, co różni się od przedstawionego algorytmu.

Pytanie 3

Który z wymienionych poniżej typów danych stanowi przykład typu stałoprzecinkowego?

A. double
B. float
C. int
D. decimal
Typ danych 'int' (integer) to przykład typu stałoprzecinkowego, który przechowuje liczby całkowite. Stałoprzecinkowe typy danych są podstawą w programowaniu, ponieważ pozwalają na efektywne przechowywanie wartości bez części ułamkowej, co przyspiesza obliczenia i redukuje zużycie pamięci. Typ 'int' jest szeroko stosowany w językach takich jak C, C++, Java i Python, a jego główną zaletą jest szybkość operacji arytmetycznych oraz przewidywalność wyników. Stałoprzecinkowe typy danych znajdują zastosowanie w algorytmach, systemach sterowania i aplikacjach embedded, gdzie precyzja obliczeń jest kluczowa.

Pytanie 4

Który z podanych algorytmów można zrealizować zarówno w sposób iteracyjny, jak i rekurencyjny?

A. Algorytm wyszukiwania binarnego
B. Algorytm sortowania bąbelkowego
C. Algorytm mapowania kluczy w tablicach asocjacyjnych
D. Algorytm generowania liczb losowych
Sortowanie bąbelkowe to algorytm iteracyjny i nie ma naturalnej wersji rekurencyjnej, ponieważ jego działanie opiera się na powtarzających się pętlach. Algorytm mapowania kluczy w tablicach asocjacyjnych nie korzysta z rekurencji – jest to proces przypisywania wartości do odpowiednich kluczy, który realizowany jest w sposób iteracyjny. Algorytm generowania liczb losowych nie wymaga rekurencji ani iteracji – jest to operacja oparta na wywołaniu odpowiednich funkcji w zależności od użytej biblioteki i języka programowania.

Pytanie 5

Jakie jest kluczowe działanie przy opracowywaniu zbiorów danych do rozwiązania problemu programistycznego?

A. Realizacja algorytmu sortującego
B. Weryfikacja zbiorów danych przed ich zastosowaniem
C. Zmiana języka programowania na bardziej wydajny
D. Wybór odpowiednich struktur danych
Implementacja algorytmu sortującego jest ważna, ale to właśnie nie jest ten najważniejszy moment w pracy z danymi – raczej końcowy etap. Zmiana języka programowania oczywiście może wpłynąć na wydajność, ale pamiętaj, że to struktury danych są kluczowe dla efektywności programu, niezależnie od wybranego języka. Testowanie zestawów danych to istotna część sprawdzania projektu, ale samo testowanie nie zastąpi dobrze przemyślanego doboru struktur danych na początku całego procesu. Bez tego trudno o dobry efekt.

Pytanie 6

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

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

Pytanie 7

Co to jest JWT (JSON Web Token)?

A. Format przechowywania danych w bazach NoSQL
B. Biblioteka JavaScript do manipulacji danymi JSON
C. Otwarty standard do bezpiecznego przekazywania informacji między stronami jako obiekt JSON
D. Protokół komunikacji między frontendem a backendem
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 8

Jedną z zasad standardu WCAG 2.0 jest

A. ograniczanie treści na stronie przez rezygnację z używania alternatywnych tekstów dla obrazów i filmów
B. unikanie przedstawiania informacji w formie uproszczonej
C. używanie jednego, odpowiednio dużego rozmiaru czcionki
D. stosowanie różnych palet kolorystycznych, w tym o wysokim kontraście
Jedną z wytycznych WCAG 2.0 jest stosowanie kilku schematów kolorystycznych, w tym bardzo kontrastowego, aby zapewnić dostępność dla osób niedowidzących i ułatwić korzystanie z treści.

Pytanie 9

Jakie składniki powinien mieć plan projektu?

A. Etapy projektu, ramy czasowe, zasoby i zadania
B. Terminy i zasoby ludzkie
C. Tylko czas wykonania i budżet
D. Wyłącznie etapy projektu
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 10

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

A. Do obsługi zdarzeń klawiatury
B. Do zarządzania bazami danych
C. Do projektowania graficznego interfejsu użytkownika
D. Do optymalizacji działania aplikacji
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 11

Jaki jest główny cel normalizacji baz danych?

A. Zmniejszenie rozmiaru bazy danych kosztem integralności
B. Przyśpieszenie zapytań kosztem zwiększenia redundancji
C. Zwiększenie liczby tabel w celu lepszej organizacji danych
D. Eliminacja redundancji danych i zapewnienie integralności danych
Głównym celem normalizacji baz danych jest eliminacja redundancji danych oraz zapewnienie ich integralności. Proces ten polega na przekształceniu danych w taki sposób, aby zminimalizować powielanie informacji, co przekłada się na oszczędność miejsca oraz poprawę wydajności bazy. Normalizacja wyodrębnia dane w sposób, który pozwala na ich logiczne i spójne uporządkowanie, co ułatwia aktualizację oraz usuwanie danych bez ryzyka wprowadzenia niezgodności. Przykładem praktycznego zastosowania normalizacji jest system zarządzania danymi klientów, gdzie informacje o klientach, zamówieniach i produktach są przechowywane w odrębnych tabelach. Dzięki temu można łatwo wprowadzać zmiany w danych klientów, bez wpływu na dane zamówień czy produktów. W branży baz danych, standardy takie jak ACID (Atomicity, Consistency, Isolation, Durability) i zasady dotyczące normalizacji, jak pierwsza, druga czy trzecia forma normalna, stanowią fundamenty dobrych praktyk projektowania baz danych. Zastosowanie tych zasad wpływa na zwiększenie efektywności operacji CRUD (Create, Read, Update, Delete) i zapewnia integralność danych w dłuższym okresie.

Pytanie 12

Co zostanie wyświetlone po wykonaniu poniższego kodu w języku Python?

data = [1, 2, 3, 4, 5] result = list(map(lambda x: x*2, filter(lambda x: x % 2 == 0, data))) print(result)

A. [4, 8]
B. [2, 4, 6, 8, 10]
C. [1, 2, 3, 4, 5]
D. [2, 6, 10]
Analizując inne odpowiedzi, możemy zauważyć, że wszystkie one bazują na błędnych założeniach dotyczących działania funkcji filter i map. Niektóre z propozycji, takie jak [2, 6, 10], sugerują, że wszystkie liczby parzyste z oryginalnej listy byłyby mnożone przez 2, co jest nieprawidłowe. Funkcja filter zwraca jedynie liczby parzyste, a to oznacza, że tylko liczby 2 i 4 są brane pod uwagę, nie 6 i 10, których w oryginalnej liście po prostu nie ma. Ponadto odpowiedź [2, 4, 6, 8, 10] jest błędna, ponieważ dodaje liczby, które nie występują w danych wejściowych, co prowadzi do nieprecyzyjnego wyniku. Warto zrozumieć, że w Pythonie operacje na kolekcjach są często wykonywane w sposób, który wymaga precyzyjnej analizy danych wejściowych. W kontekście programowania, często popełnianym błędem jest zakładanie, że wszystkie liczby pasujące do jakiegoś warunku będą uwzględniane w dalszej obróbce bez dokładnego ich filtrowania. Stąd wynika, że zrozumienie, jak działają funkcje takie jak filter i map, jest kluczowe dla efektywnego i poprawnego programowania. W procesie nauki ważne jest, aby przyglądać się działaniu kodu krok po kroku i dokładnie analizować, jak funkcje przetwarzają dane. Zrozumienie tych podstawowych koncepcji jest niezbędne, aby uniknąć podobnych nieporozumień w przyszłości.

Pytanie 13

Jakie czynniki powinny być brane pod uwagę podczas organizacji zasobów ludzkich w projekcie?

A. Umiejętności oraz doświadczenie członków zespołu
B. Budżet projektu, bez uwzględnienia kompetencji zespołu
C. Wyłącznie techniczne wymagania projektu
D. Jedynie dostępność technologii
Podczas planowania zasobów ludzkich w projekcie kluczowe jest uwzględnienie umiejętności i doświadczenia członków zespołu. Odpowiednie dopasowanie kompetencji do wymagań projektu ma ogromny wpływ na jakość i tempo realizacji zadań. Zespół o różnorodnych umiejętnościach jest bardziej elastyczny i lepiej radzi sobie z napotkanymi wyzwaniami. Analiza umiejętności pozwala na efektywne przydzielanie zadań, co zwiększa produktywność i redukuje ryzyko opóźnień.

Pytanie 14

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

Ilustracja do pytania
A. w celu modyfikacji lub remiksowania
B. w działaniach komercyjnych
C. pod warunkiem udostępnienia go na tej samej zasadzie licencyjnej
D. pod warunkiem zachowania go w oryginalnej formie
Licencja nie zawsze pozwala na wykorzystanie utworu w celach komercyjnych – istnieją wersje zakazujące tego. Warunek pozostawienia utworu w oryginalnej postaci dotyczy licencji NoDerivatives (ND), a nie standardowych Creative Commons. Udostępnienie na tej samej licencji to cecha licencji ShareAlike (SA), która odnosi się do rozpowszechniania, a nie remiksowania.

Pytanie 15

W jakiej topologii sieciowe wszystkie urządzenia są bezpośrednio powiązane z każdym innym?

A. Topologia siatki
B. Topologia gwiazdy
C. Topologia magistrali
D. Topologia pierścienia
Topologia magistrali charakteryzuje się tym, że wszystkie urządzenia są podłączone do pojedynczego kabla, zwanym magistralą. Komunikacja w tej topologii odbywa się przez przekazywanie sygnałów wzdłuż tego kabla, co może prowadzić do kolizji, gdy wiele urządzeń próbuje jednocześnie przesyłać dane. Ograniczeniem tej topologii jest to, że awaria magistrali skutkuje brakiem komunikacji w całej sieci, co czyni ją mniej niezawodną i efektywną w porównaniu do topologii siatki. Topologia gwiazdy polega na tym, że wszystkie urządzenia są połączone z centralnym punktem, zwanym koncentratorem lub przełącznikiem. Chociaż ta topologia zapewnia łatwość w dodawaniu nowych urządzeń i umożliwia izolację awarii, nie gwarantuje pełnej redundantności, ponieważ awaria centralnego urządzenia prowadzi do przerwania komunikacji w całej sieci. Z kolei topologia pierścienia, w której każde urządzenie jest połączone z dwoma innymi, tworząc zamknięty krąg, również nie jest odpowiednia, ponieważ awaria jednego połączenia uniemożliwia komunikację w całym pierścieniu, co czyni ją mniej odporną na błędy. W porównaniu do topologii siatki, wszystkie te struktury mają swoje ograniczenia, które wpływają na ich zastosowanie w bardziej złożonych i wymagających środowiskach sieciowych.

Pytanie 16

Który z wymienionych terminów dotyczy klasy, która stanowi podstawę dla innych klas, lecz nie może być tworzona w instancji?

A. Klasa pochodna
B. Klasa statyczna
C. Klasa abstrakcyjna
D. Klasa finalna
Klasa statyczna jest klasą, która zawiera tylko statyczne metody i pola, ale może być instancjonowana. Klasa pochodna to klasa, która dziedziczy z klasy bazowej i nie jest sama w sobie abstrakcyjna, chyba że zawiera metody czysto wirtualne. Klasa finalna (w niektórych językach, np. Java) to klasa, która nie może być dziedziczona, co jest odwrotnością klasy abstrakcyjnej, której głównym celem jest właśnie dziedziczenie.

Pytanie 17

Które z poniższych jest podstawowym rodzajem testów używanych w testowaniu jednostkowym?

A. Testy integracyjne
B. Testy akceptacyjne
C. Testy jednostkowe
D. Testy systemowe
Testy jednostkowe są kluczowym elementem procesu testowania oprogramowania, szczególnie w kontekście metodologii programowania zwinnego. Polegają one na testowaniu pojedynczych najmniejszych części programu, takich jak funkcje czy metody, w izolacji od reszty systemu. Dzięki temu możemy szybko wykryć błędy i upewnić się, że dany fragment kodu działa zgodnie z oczekiwaniami. W praktyce, testy jednostkowe są często automatyzowane i stanowią podstawę dla procesu ciągłej integracji (CI). Przykładem zastosowania testów jednostkowych może być sprawdzenie, czy funkcja dodająca dwie liczby zwraca poprawny wynik dla różnych zestawów danych wejściowych. Dzięki testom jednostkowym programiści mogą z większą pewnością modyfikować i rozwijać kod, mając pewność, że nie wprowadzają nowych błędów. To właśnie testy jednostkowe pozwalają na szybkie wykrywanie regresji i są fundamentem dla bardziej zaawansowanych form testowania, takich jak testy integracyjne czy systemowe. Dbanie o dobrze zdefiniowany zestaw testów jednostkowych jest uznawane za dobrą praktykę w branży IT i podnosi jakość oprogramowania.

Pytanie 18

Co będzie wynikiem działania poniższego kodu SQL?

SELECT COUNT(*) FROM employees WHERE salary > (SELECT AVG(salary) FROM employees);

A. Liczba pracowników z najwyższą pensją
B. Średnia pensja wszystkich pracowników
C. Błąd składni SQL
D. Liczba pracowników z pensją powyżej średniej
Odpowiedź, że wynik działania zapytania SQL to liczba pracowników z pensją powyżej średniej, jest całkowicie poprawna. Zapytanie to korzysta z funkcji agregującej COUNT(*), która zlicza liczbę rekordów spełniających określony warunek. W tym przypadku warunkiem jest, że pensja pracownika jest większa od średniej pensji wszystkich pracowników, którą obliczamy za pomocą wewnętrznego zapytania (subquery). Tego rodzaju operacje są powszechnie stosowane w analizie danych w bazach danych, gdzie często musimy wykonać porównania względem wartości agregatów, takich jak średnia, mediana czy suma. Przykładowo, w analizie wynagrodzeń w danej firmie, można użyć podobnych zapytań do oceny, jaki odsetek pracowników jest wynagradzanych powyżej średniej, co może być istotne z punktu widzenia polityki płacowej oraz budżetowania. Pamiętaj, że dobre praktyki w pracy z bazami danych obejmują optymalizację zapytań oraz unikanie niepotrzebnych obliczeń, co może wpłynąć na wydajność systemu.

Pytanie 19

Jakie jest zastosowanie iteratora w zbiorach?

A. Do usuwania elementów ze zbioru
B. Do iterowania po elementach zbioru
C. Do generowania kopii zbiorów
D. Do zmiany rodzaju zbioru w trakcie działania aplikacji
Tworzenie kopii kolekcji to operacja duplikacji danych i nie wymaga iteratorów. Usuwanie elementów z kolekcji może być realizowane przy pomocy iteratora, ale nie jest to jego główna funkcja. Zmiana typu kolekcji to operacja, która często wymaga konwersji lub transformacji, ale iterator nie służy do zmiany typów danych, a jedynie do iteracji po elementach kolekcji.

Pytanie 20

Które z poniższych NIE jest zasadą programowania SOLID?

A. Dependency Inversion Principle (Zasada odwrócenia zależności)
B. Single Responsibility Principle (Zasada pojedynczej odpowiedzialności)
C. Code Reuse Principle (Zasada ponownego użycia kodu)
D. Open/Closed Principle (Zasada otwarte/zamknięte)
Programowanie zgodne z zasadami SOLID jest kluczowym elementem w budowaniu oprogramowania o wysokiej jakości. Odpowiedzi takie jak Zasada ponownego użycia kodu mogą wydawać się atrakcyjne, jednak nie są częścią formalnego zbioru zasad SOLID. Zasady te skupiają się na aspektach architektury i projektowania kodu, które wspierają jego elastyczność i zrozumiałość. W rzeczywistości, zasada ponownego użycia kodu, choć istotna w praktyce, nie odnosi się bezpośrednio do celów osiąganych przez zasady SOLID. Wprowadzenie do projektu zasady, że każda klasa czy moduł powinny mieć wyłącznie jedną odpowiedzialność, jak przewiduje Zasada pojedynczej odpowiedzialności, może prowadzić do znacznie lepszego zrozumienia struktury kodu i ułatwić jego modyfikacje w przyszłości. Wiele osób błędnie interpretuje potrzebę ponownego użycia kodu jako priorytet, co może prowadzić do tworzenia monolitycznych klas, które są trudne do zarządzania. Ponadto, Zasada otwarte/zamknięte sugeruje, że komponenty powinny być otwarte na rozszerzenia, ale zamknięte na modyfikacje, co stanowi fundament dla stabilnego i skalowalnego oprogramowania. Ignorując te zasady, programiści mogą tworzyć kod, który jest trudny do zrozumienia i utrzymania, co w dłuższej perspektywie zwiększa koszty i ryzyko błędów.

Pytanie 21

Zaprezentowany diagram ilustruje wyniki przeprowadzonych testów:

Ilustracja do pytania
A. funkcjonalności
B. ochrony
C. wydajnościowych
D. użyteczności
Wykres obrazuje wyniki testów wydajnościowych, które pokazują, jak system lub aplikacja radzi sobie pod dużym obciążeniem. Testy te pomagają zidentyfikować wąskie gardła i umożliwiają optymalizację wydajności.

Pytanie 22

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

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

Jakie oprogramowanie służy do monitorowania błędów oraz zarządzania projektami?

A. Git
B. Jira
C. Bugzilla
D. Jasmine
Bugzilla to narzędzie do śledzenia błędów, które skupia się głównie na identyfikacji oraz zarządzaniu defektami w oprogramowaniu. Choć może być używane w kontekście zarządzania projektami, jego funkcjonalności są ograniczone w porównaniu do kompleksowych rozwiązań, takich jak Jira. Bugzilla jest bardziej odpowiednie dla zespołów, które potrzebują prostszych narzędzi do śledzenia błędów, ale nie zapewnia takich możliwości zarządzania projektami jak Jira. Git to system kontroli wersji, który umożliwia zarządzanie kodem źródłowym, ale nie jest narzędziem do śledzenia błędów ani do zarządzania projektami jako takimi. Git pozwala programistom na współpracę i śledzenie zmian w kodzie, jednakże brakuje mu funkcji zarządzania projektami oraz integracji z procesami Agile, które są kluczowe w nowoczesnym rozwoju oprogramowania. Jasmine to framework do testowania jednostkowego aplikacji JavaScript, który koncentruje się na pisaniu testów i nie jest narzędziem do zarządzania projektami ani do śledzenia błędów. Pomimo że testowanie jednostkowe jest istotną częścią cyklu życia oprogramowania, Jasmine nie oferuje funkcjonalności związanych z zarządzaniem projektami, co czyni go nieodpowiednim w kontekście tego pytania.

Pytanie 24

Jak wygląda kod uzupełnienia do dwóch dla liczby -5 w formacie binarnym przy użyciu 8 bitów?

A. 10000101
B. 11111011
C. 11111101
D. 00000101
Pierwsza z niepoprawnych odpowiedzi, która przedstawia wartość 00000101, jest błędna, ponieważ jest to binarna reprezentacja liczby 5, a nie -5. Kod uzupełnieniowy do dwóch wymaga przedstawienia liczby ujemnej poprzez inwersję bitów i dodanie jedynki. Ta odpowiedź nie ma zastosowania przy obliczaniu liczb ujemnych, stąd jest niewłaściwa. Kolejna odpowiedź, 11111101, również jest nieprawidłowa. W przypadku tej liczby, zainwersowanie bitów liczby 5 dawałoby 11111010, a dodanie 1 do tej wartości prowadziłoby do 11111011, co wskazuje, że ta odpowiedź nie jest zgodna z zasadą uzupełnienia do dwóch. Ostatnia z niepoprawnych odpowiedzi, 10000101, jest również błędna, ponieważ nie odpowiada żadnej z reprezentacji liczby -5. Gdybyśmy spróbowali konwertować ją z powrotem na wartość dziesiętną, otrzymalibyśmy 133, co jest zdecydowanie niepoprawne. Warto zauważyć, że każda z tych niepoprawnych odpowiedzi wskazuje na brak zrozumienia zasad konwersji liczb ujemnych w systemie binarnym, co jest kluczowe w informatyce i programowaniu, a ich użycie w praktycznych aplikacjach mogłoby prowadzić do poważnych błędów w obliczeniach.

Pytanie 25

Jaką rolę pełni debugger w trakcie programowania?

A. Do wykrywania błędów w czasie działania programu
B. Do konwersji kodu źródłowego na język maszynowy
C. Do kontrolowania wersji kodu źródłowego
D. Do automatycznego generowania dokumentacji projektu
Debugger to takie narzędzie, które pomaga programistom w znajdowaniu błędów i śledzeniu, co się dzieje z programem, kiedy go uruchamiamy. Można go zatrzymać w dowolnym momencie, co nazywamy breakpoints, i wtedy można zobaczyć, jakie zmienne mają jakie wartości. Dzięki temu można łatwiej dostrzegać błędy logiczne czy składniowe. Wydaje mi się, że to naprawdę ważne narzędzie w pracy każdego programisty, bo ułatwia życie!

Pytanie 26

Jaką funkcję spełniają atrybuty klasy w programowaniu obiektowym?

A. Określają globalne stałe programu
B. Umożliwiają przeprowadzanie operacji na obiektach
C. Zawierają informacje opisujące stan obiektu
D. Zapisują wartości lokalne w funkcjach
Zmienne lokalne w metodach przechowują wartości tymczasowe i są usuwane po zakończeniu wykonywania metody, co odróżnia je od pól klasy, które istnieją tak długo, jak istnieje obiekt. Stałe globalne programu są dostępne z każdego miejsca w kodzie, ale nie są związane z konkretną instancją obiektu – ich wartość nie zmienia się dla różnych obiektów. Operacje wykonywane na obiektach są definiowane przez metody klasy, a nie przez pola – pola jedynie przechowują dane, natomiast metody określają zachowanie obiektów i umożliwiają interakcję z nimi.

Pytanie 27

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

A. ASP.NET Core, jQuery, Joomla!, Wordpress, Angular
B. ASP.NET Core, Django, Angular, React.js, Node.js
C. jquery, Joomla!, Wordpress, android Studio, Xamarin
D. Visual Studio, Eclipse, angular, React.js, Node.js
Joomla! i WordPress – To systemy zarządzania treścią (CMS), a nie frameworki. Android Studio i Xamarin – Służą do tworzenia aplikacji mobilnych, a nie webowych. Eclipse – To środowisko programistyczne, nie framework typowy dla web developmentu.

Pytanie 28

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

A. componentWillPublish()
B. componentDidUpdate()
C. componentWillUnmount()
D. componentDidMount()
Dla osób pracujących z React.js kluczowe jest zrozumienie cyklu życia komponentów, który składa się z określonych metod umożliwiających zarządzanie stanem komponentów w różnych momentach ich życia. Wśród powszechnie używanych metod znajdują się componentDidMount(), componentDidUpdate() oraz componentWillUnmount(). Każda z tych metod pełni istotną rolę w kontekście zarządzania komponentami. Metoda componentDidMount() jest pierwszym momentem, kiedy komponent jest dostępny w DOM, co sprawia, że jest idealna do wykonywania wszelkich operacji związanych z inicjalizacją, takich jak pobieranie danych z serwera. Z kolei componentDidUpdate() umożliwia reagowanie na zmiany stanu lub propów, co jest niezbędne w dynamicznych interfejsach użytkownika. Metoda componentWillUnmount() pozwala na odpowiednie czyszczenie zasobów, co zapobiega wyciekom pamięci, na przykład poprzez usuwanie nasłuchiwaczy. Użytkownicy mogą błędnie interpretować metodę componentWillPublish(), sądząc, że jest ona częścią standardowego cyklu życia komponentów, jednak nie jest to zgodne ze specyfikacją React. Kluczowe jest, aby nie mylić terminologii i zrozumieć, że właściwe metody cyklu życia są jasno zdefiniowane w dokumentacji React. Ignorowanie tego aspektu może prowadzić do problemów w zarządzaniu komponentami, ich stanem oraz interakcjami z użytkownikiem, co w dłuższej perspektywie wpływa na jakość i wydajność aplikacji.

Pytanie 29

Jak nazywa się wzorzec projektowy, do którego odnosi się ta definicja?

Ilustracja do pytania
A. Dekorator
B. Kompozyt
C. Prototyp
D. Fasada
Prototyp to wzorzec kreacyjny, który koncentruje się na tworzeniu nowych obiektów poprzez klonowanie istniejących. Różni się od fasady, ponieważ nie zajmuje się uproszczeniem interfejsów, lecz optymalizacją procesu tworzenia obiektów. Jest używany, gdy klasy instancji mają podobne stany i konieczne jest szybkie ich generowanie z zachowaniem pewnych właściwości. Dekorator natomiast to wzorzec strukturalny umożliwiający dynamiczne dodawanie nowych funkcjonalności do obiektów, bez modyfikacji ich struktury bazowej. Podstawowym celem dekoratora jest rozszerzenie możliwości obiektów, co odróżnia go od fasady, która skupia się na upraszczaniu dostępu do złożonych systemów. Dekorator działa na poziomie pojedynczych komponentów, gdzie fasada dotyczy całego systemu. Kompozyt umożliwia tworzenie hierarchicznych struktur obiektowych, pozwalając na jednolite traktowanie indywidualnych obiektów i ich złożonych struktur. Umożliwia pracę z drzewiastymi strukturami danych, co czyni go bardziej odpowiednim do zastosowań, gdzie istotna jest praca z kolekcjami obiektów jako całością. Wszystkie te wzorce mają odmienne założenia i zastosowania, a błąd w ich rozpoznaniu może wynikać z braku zrozumienia ich specyficznych ról i miejsc w architekturze oprogramowania. Wybór odpowiedniego wzorca wymaga zrozumienia zarówno wymagań systemowych, jak i ich długoterminowych implikacji na projekt i utrzymanie oprogramowania. Każdy z tych wzorców wnosi unikalne wartości, ale ich zastosowanie powinno być zgodne z konkretnymi potrzebami projektowymi i architektonicznymi systemu, nad którym się pracuje.

Pytanie 30

Który z wymienionych algorytmów pracujących na tablicy jednowymiarowej ma złożoność obliczeniową O(n2)?

A. Wyświetlenie elementów
B. Wyszukiwanie metodą binarną
C. Sortowanie bąbelkowe
D. Sortowanie szybkie
Sortowanie bąbelkowe to taki klasyczny algorytm, który ma złożoność O(n^2). Chociaż jest dość prosty w zrozumieniu, to nie za bardzo sprawdza się w większych zbiorach danych. Działa tak, że porównuje sąsiadujące ze sobą elementy i zamienia je miejscami, jeśli są w złej kolejności. Trochę to czasochłonne, ale warto znać ten algorytm, bo pokazuje podstawy sortowania.

Pytanie 31

Na jakim etapie cyklu życia projektu tworzony jest szczegółowy opis wymagań funkcjonalnych oraz niefunkcjonalnych?

A. Wdrożenie
B. Planowanie
C. Analiza
D. Weryfikacja
Implementacja to proces tworzenia kodu na podstawie wymagań, ale same wymagania powstają w fazie analizy. Testowanie to etap weryfikacji poprawności aplikacji, a nie moment zbierania wymagań. Planowanie koncentruje się na budżecie i harmonogramie, ale nie obejmuje dogłębnego opisu funkcjonalności i niefunkcjonalnych aspektów produktu.

Pytanie 32

Co zostanie wypisane w konsoli po wykonaniu poniższego kodu?

let i = 0; while (i < 5) { i++; if (i === 3) continue; console.log(i); }

A. 0, 1, 2, 3, 4
B. 0, 1, 2, 4, 5
C. 1, 2, 3, 4, 5
D. 1, 2, 4, 5
W przypadku pozostałych odpowiedzi można zauważyć, że wynikają z nieporozumień dotyczących działania pętli oraz instrukcji sterującej continue. W odpowiedzi sugerującej, że w konsoli zostaną wypisane liczby 0, 1, 2, 4, 5, występuje założenie, że wartość początkowa zmiennej i (czyli 0) również zostanie wypisana, co jest nieprawdziwe. Zmienna i jest zwiększana przed jej wypisaniem, więc jej początkowa wartość nie zostaje uwzględniona. W kolejnej opcji, gdzie podano 1, 2, 3, 4, 5, zauważyć można, że liczba 3 została wypisana, co jest sprzeczne z logiką zastosowaną w kodzie, ponieważ w momencie, gdy i równa się 3, instrukcja continue przerywa bieżącą iterację pętli, pomijając kod wypisujący. Również myśląc o odpowiedzi, która sugeruje, że w konsoli pojawią się liczby 1, 2, 3, 4, 5, można zauważyć, że pominięcie wartości 3 jest kluczowym momentem, który prowadzi do błędnego wniosku. Widać tutaj typowe błędy myślowe, polegające na nieprzemyślanej interpretacji pętli oraz działania instrukcji warunkowych. Aby poprawnie zrozumieć, jak działają pętle i instrukcje w JavaScript, warto poświęcić czas na eksperymentowanie z kodem oraz jego analizowanie, aby dostrzec, jakie konsekwencje mają poszczególne komendy i jakie wartości zmiennych są faktycznie wypisywane.

Pytanie 33

Wykorzystanie typu DECIMAL w MySQL wymaga wcześniejszego określenia długości (liczby cyfr) przed oraz po przecinku. Jak należy to zapisać?

A. logiczny
B. zmiennoprzecinkowy
C. łańcuchowy
D. stałoprzecinkowy
Typ DECIMAL w języku MySQL jest używany do przechowywania liczb dziesiętnych z określoną precyzją. Przy definiowaniu tego typu danych wymagane jest określenie dwóch głównych parametrów: długości całkowitej liczby, czyli liczby cyfr przed przecinkiem, oraz długości części dziesiętnej, czyli liczby cyfr po przecinku. Taki zapis ma postać DECIMAL(M, D), gdzie M to maksymalna liczba cyfr, a D to liczba cyfr po przecinku. Przykład zastosowania to: DECIMAL(10, 2), co oznacza, że liczba może mieć maksymalnie 10 cyfr, z czego 2 cyfry będą po przecinku. Typ DECIMAL jest szczególnie przydatny w aplikacjach finansowych, gdzie precyzja obliczeń jest kluczowa, aby uniknąć błędów zaokrągleń, które mogą występować w przypadku typów zmiennoprzecinkowych. Standardy dotyczące typów danych w SQL, takie jak SQL:2008, również uznają znaczenie precyzyjnych reprezentacji liczbowych, co sprawia, że DECIMAL jest preferowany w wielu zastosowaniach. Warto dodać, że MySQL pozwala na elastyczność w definiowaniu długości, co umożliwia optymalne dostosowanie do specyficznych wymagań aplikacji.

Pytanie 34

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

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

Pytanie 35

Która z wymienionych metod może pomóc w walce z uzależnieniem od internetu?

A. Zainstalowanie większej ilości aplikacji rozrywkowych
B. Używanie komputera jedynie w nocy
C. Wprowadzenie systematycznych przerw od używania urządzeń cyfrowych
D. Zwiększenie czasu spędzanego na mediach społecznościowych
Wprowadzenie regularnych przerw od korzystania z urządzeń cyfrowych pomaga przeciwdziałać uzależnieniu od internetu. Regularne odstawienie urządzeń pozwala na regenerację, zmniejsza ryzyko nadmiernej ekspozycji na treści cyfrowe i pozwala na większą interakcję z rzeczywistym otoczeniem. Przerwy te pomagają w utrzymaniu równowagi psychicznej i fizycznej, poprawiają koncentrację oraz jakość snu.

Pytanie 36

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

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

Pytanie 37

Który system informatyczny powinien być zastosowany do zarządzania sprzedażą w e-sklepie?

A. System CMS
B. System CRM
C. System ERP
D. System e-commerce
System e-commerce to takie fajne rozwiązanie, które naprawdę ułatwia sprzedaż przez internet. Znajdziesz w nim wszystko, co potrzebne do zarządzania produktami, zamówieniami, a nawet płatnościami. Dzięki temu przedsiębiorcy mogą szybko zakładać i prowadzić sklepy online, co daje super doświadczenie dla klientów. Warto wspomnieć o popularnych systemach, jak Shopify czy WooCommerce – z nich korzystają tysiące sklepów na całym świecie. Te systemy mają też fajne narzędzia, dzięki którym można monitorować sprzedaż czy analizować, co klienci lubią. A bezpieczeństwo? To też ważna sprawa, bo standardy, takie jak PCI DSS, dbają o to, żeby dane klientów były dobrze chronione. W czasach rosnącej konkurencji w internecie, wybór odpowiedniego systemu e-commerce to klucz do sukcesu.

Pytanie 38

Wskaż programowanie, w którym możliwe jest stworzenie aplikacji mobilnej dla systemu Android?

A. Obiective-C
B. Swift
C. C++
D. Java
Java jest jednym z najważniejszych języków programowania wykorzystywanych do tworzenia aplikacji mobilnych na platformę Android. Został stworzony przez firmę Sun Microsystems i obecnie jest rozwijany przez Oracle. Java jest językiem obiektowym, co oznacza, że umożliwia programistom tworzenie aplikacji w sposób modularny i zorganizowany. W kontekście Androida, Java jest podstawowym językiem, w którym bazowe API (Application Programming Interface) zostało opracowane. Wysoka wydajność, bogata biblioteka klas oraz wsparcie dla programowania wielowątkowego sprawiają, że Java jest idealnym wyborem dla deweloperów aplikacji mobilnych. Przykładowo, do stworzenia prostego interfejsu użytkownika w aplikacji Android, programista może wykorzystać takie elementy jak TextView czy Button, które są częścią frameworka Android SDK. Współczesne praktyki wskazują również na wykorzystanie Java w połączeniu z Kotlinem, co pozwala na osiągnięcie lepszych rezultatów i zwiększa efektywność w pracy nad projektami mobilnymi.

Pytanie 39

Które słowo kluczowe w C++ służy do definiowania klasy nadrzędnej?

A. class
B. base
C. public
D. virtual
Słowo kluczowe 'public' nie definiuje klasy – określa jedynie modyfikator dostępu, umożliwiający dostęp do pól i metod z zewnątrz klasy. 'Virtual' służy do deklarowania metod wirtualnych i wskazuje, że dana metoda może być przesłonięta w klasie pochodnej. 'Base' nie jest słowem kluczowym w C++ – w niektórych językach programowania oznacza klasę bazową, ale nie jest używane do definiowania klasy w C++.

Pytanie 40

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. false, false, true
B. true, false, false
C. true, true, true
D. true, false, true
Wynik działania kodu to true, false, true. Pierwsza linia kodu, gdzie porównujemy zmienne 'a' i 'b' przy użyciu operatora '==', zwraca true, ponieważ obie zmienne wskazują na ten sam obiekt w pamięci, co jest efektem optymalizacji JVM dla literałów typu String. W przypadku drugiej linii, gdzie porównujemy 'a' i 'c', wynik to false, ponieważ 'c' to nowy obiekt utworzony przy pomocy operatora 'new', a więc ma inną referencję w pamięci. W trzeciej linii używamy metody 'equals()', która porównuje wartości obiektów, a nie ich referencje. W tym przypadku porównywane są wartości stringów i ponieważ wszystkie mają tę samą treść, wynik to true. Zrozumienie różnicy między operatorem '==' a metodą 'equals()' jest kluczowe w programowaniu w Javie. Przy pracy z obiektami, zawsze warto stosować 'equals()' do porównywania zawartości, aby uniknąć nieporozumień związanych z referencjami."