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:51
  • Data zakończenia: 22 października 2025 15:56

Egzamin niezdany

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

Wymagane minimum: 20 punktów (50%)

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

Co to jest Service Worker w kontekście Progressive Web Apps?

A. Usługa hostingowa dla aplikacji webowych
B. Narzędzie do testowania wydajności aplikacji
C. Protokół komunikacji między przeglądarką a serwerem
D. Skrypt działający w tle przeglądarki, niezależnie od strony webowej
Pojęcia związane z usługami hostingowymi, narzędziami do testowania wydajności oraz protokołami komunikacyjnymi są istotne w kontekście aplikacji webowych, ale nie mają bezpośredniego związku z tym, czym jest Service Worker. Usługa hostingowa dla aplikacji webowych zajmuje się udostępnianiem treści w Internecie, co jest zupełnie innym zagadnieniem. Aplikacje webowe mogą być hostowane na serwerach, ale to nie ma wpływu na sposób, w jaki działają one w przeglądarkach. Narzędzia do testowania wydajności są pomocne, ale nie są częścią samego procesu tworzenia aplikacji z użyciem Service Workera. Protokół komunikacji między przeglądarką a serwerem dotyczy wymiany danych, ale nie odnosi się do koncepcji działania skryptu w tle. Typowe błędy myślowe prowadzące do takich niepoprawnych wniosków to mylenie różnych aspektów technologii webowych i niezdolność do zrozumienia, jak elementy te współpracują w ekosystemie aplikacji. Aby lepiej zrozumieć Service Worker, warto przyjrzeć się jego roli w kontekście działania offline i poprawy doświadczeń użytkownika, co jest kluczowe dla nowoczesnych aplikacji webowych.

Pytanie 2

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

A. Dobra niematerialne
B. Prawa pokrewne
C. Własność przemysłowa
D. Autorskie prawa majątkowe
Dobra niematerialne to szersza kategoria obejmująca różne aspekty własności intelektualnej, ale znaki towarowe są formalnie klasyfikowane jako własność przemysłowa. Autorskie prawa majątkowe dotyczą utworów literackich, muzycznych i filmowych, ale nie obejmują znaków towarowych. Prawa pokrewne chronią wykonawców i producentów nagrań, lecz nie odnoszą się do znaków towarowych i brandingu firm.

Pytanie 3

Który z wymienionych parametrów określa prędkość procesora?

A. Częstotliwość taktowania
B. Rodzaj złącza
C. Liczba rdzeni
D. Wielkość pamięci podręcznej
Częstotliwość taktowania procesora, wyrażana najczęściej w gigahercach (GHz), jest kluczowym parametrem opisującym szybkość działania jednostki centralnej. Określa, ile cykli zegara procesor jest w stanie wykonać w ciągu jednej sekundy. Wyższa częstotliwość oznacza większą ilość operacji, które procesor może przetworzyć w danym czasie, co bezpośrednio wpływa na jego wydajność. Przykładowo, procesor o częstotliwości 3,0 GHz może wykonać 3 miliardy cykli na sekundę, co sprawia, że jest w stanie przeprowadzać bardziej skomplikowane obliczenia i efektywniej zarządzać zadaniami. W praktyce jednak sama częstotliwość nie jest jedynym wskaźnikiem wydajności; istotne są też inne czynniki, takie jak architektura procesora, liczba rdzeni czy szybkość pamięci RAM. Standardy, takie jak Intel Core i9 czy AMD Ryzen 5000, dostarczają informacji na temat maksymalnej częstotliwości taktowania, co pozwala konsumentom lepiej dobierać sprzęt do swoich potrzeb. Warto również zauważyć, że wielu nowoczesnych procesorów stosuje technologię Turbo Boost, która pozwala na chwilowe zwiększenie częstotliwości w celu uzyskania lepszej wydajności przy intensywnych obciążeniach.

Pytanie 4

Co to jest lazy loading w kontekście ładowania obrazów na stronie?

A. Format przechowywania obrazów w pamięci podręcznej przeglądarki
B. Technika ładowania obrazów dopiero w momencie, gdy stają się widoczne dla użytkownika
C. Protokół transferu obrazów między serwerem a przeglądarką
D. Metoda kompresji obrazów przed wysłaniem na serwer
Lazy loading to technika, która pozwala na ładowanie obrazów oraz innych zasobów dopiero w momencie, gdy stają się one widoczne dla użytkownika na ekranie. Dzięki temu oszczędzamy zasoby sieciowe i poprawiamy czas ładowania strony, co jest szczególnie istotne w kontekście optymalizacji SEO oraz doświadczenia użytkownika. Na przykład, w przypadku długiej strony internetowej z wieloma obrazami, lazy loading sprawia, że podczas przewijania strony obrazy nie są ładowane od razu, co zmniejsza obciążenie serwera i przyspiesza wczytywanie widocznych części strony. W praktyce można zastosować atrybuty takie jak "loading='lazy'" w znaczniku <img>, co jest zgodne z nowoczesnymi standardami HTML. Ponadto, wiele bibliotek i frameworków, jak np. Intersection Observer API, umożliwia zaawansowaną implementację lazy loadingu, co sprawia, że jest to obecnie powszechnie stosowana praktyka.

Pytanie 5

Jakie składniki są kluczowe w dynamicznym formularzu logowania?

A. Plik graficzny
B. Tabela w bazie danych
C. Nagłówek HTTP
D. Pola tekstowe do wprowadzania danych użytkownika
Nagłówek HTTP nie jest elementem interaktywnym dla użytkownika i służy do przesyłania danych między klientem a serwerem. Pliki graficzne mogą być elementem wizualnym formularza, ale same w sobie nie umożliwiają wprowadzania danych. Tabele w bazie danych przechowują dane po stronie serwera i nie są bezpośrednim elementem formularza logowania – odgrywają one rolę na poziomie backendu, a nie interfejsu użytkownika.

Pytanie 6

Który z wymienionych elementów jest fundamentalny w architekturze klient-serwer?

A. Zdalne wykonywanie aplikacji na urządzeniu klienta
B. Brak podziału na funkcje klienta i serwera
C. Scentralizowane przechowywanie danych
D. Wyłącznie komunikacja synchroniczna
Zdalne wykonywanie aplikacji na urządzeniu klienta oznacza model przetwarzania lokalnego, co nie jest główną cechą architektury klient-serwer. Brak podziału na funkcje klienta i serwera narusza podstawową ideę tego modelu, który zakłada rozdzielenie ról pomiędzy te dwie jednostki. Wyłącznie komunikacja synchroniczna ogranicza elastyczność aplikacji i może prowadzić do opóźnień w przetwarzaniu danych.

Pytanie 7

Jaką rolę odgrywa pamięć operacyjna (RAM) w komputerowym systemie?

A. Tymczasowe magazynowanie danych i instrukcji dla procesora
B. Umożliwienie tworzenia kopii zapasowej danych użytkownika
C. Zarządzanie transferem danych pomiędzy urządzeniami wejścia/wyjścia
D. Trwałe przechowywanie systemu operacyjnego
Odpowiedzi, które sugerują inne funkcje pamięci operacyjnej, są niepoprawne z kilku powodów. Stałe przechowywanie systemu operacyjnego jest zarezerwowane dla pamięci masowej, takiej jak dyski twarde lub SSD, które zapewniają długoterminowe przechowywanie danych. Pamięć RAM jest ulotna, co oznacza, że wszystkie dane są tracone po wyłączeniu zasilania, podczas gdy system operacyjny musi być zawsze dostępny po restarcie komputera. Kolejną nieścisłością jest sugestia, że RAM zarządza przepływem danych między urządzeniami wejścia/wyjścia. To zadanie leży w gestii kontrolerów i systemu operacyjnego, które koordynują interakcję między różnorodnymi urządzeniami, a nie samej pamięci operacyjnej. Ostatnia odpowiedź dotycząca zapewnienia kopii zapasowej danych użytkownika również jest błędna. Kopie zapasowe są zwykle przechowywane na pamięci masowej, a nie w RAM, która nie ma zdolności do trwałego przechowywania danych. Pamięć operacyjna służy jedynie do tymczasowego przetrzymywania danych potrzebnych do bieżącego działania systemu komputerowego.

Pytanie 8

Jaką strukturę danych stosuje się w algorytmie BFS (przeszukiwanie wszerz)?

A. Graf
B. Kolejka
C. Tablica
D. Zbiór
Stos jest używany w algorytmie DFS (przeszukiwanie w głąb), a nie w BFS, ponieważ DFS eksploruje możliwie najgłębiej dany graf, zanim wróci do poprzedniego poziomu. Lista jest używana jako struktura ogólnego przeznaczenia, ale nie jest podstawowym narzędziem w algorytmie BFS. Drzewa są strukturą danych, którą BFS może przeszukiwać, ale sama struktura drzewa nie jest narzędziem używanym w algorytmie BFS – to kolejka pełni tę funkcję, przechowując wierzchołki do odwiedzenia.

Pytanie 9

Jak nazywa się technika umożliwiająca asynchroniczne wykonywanie operacji w JavaScript?

A. Function
B. Promise
C. Variable
D. Object
Wybór opcji Variable, Function lub Object wskazuje na nieporozumienie odnośnie do podstawowych pojęć w JavaScript. Variable to termin odnoszący się do sposobu przechowywania danych w programie; jest to kontener, który może przechowywać różne typy danych, ale nie jest to technika do zarządzania asynchronicznością. Funkcja jest blokiem kodu, który można wykonać, ale sama w sobie nie zapewnia asynchronicznego działania, chyba że zostanie połączona z innymi technikami, takimi jak Promise czy callbacki. Obiekt, natomiast, to struktura danych, która grupuje właściwości i metody, jednak nie ma bezpośredniego związku z zarządzaniem asynchronicznymi operacjami. Częstym błędem jest mylenie tych podstawowych pojęć i ich funkcjonalności. Osoby, które wybierają niewłaściwe odpowiedzi, często koncentrują się na ogólnych właściwościach tych terminów, nie dostrzegając ich ograniczeń. Aby skutecznie zarządzać asynchronicznymi operacjami w JavaScript, należy zrozumieć, że Promise jest konstrukcją zaprojektowaną specjalnie do tego celu, co odzwierciedla jego użycie w nowoczesnym kodzie JavaScript i zgodność z dobrymi praktykami programistycznymi. Dlatego, aby efektywnie pracować z asynchronicznością, warto zwrócić uwagę na techniki takie jak Promise, które umożliwiają bardziej złożone operacje oraz lepsze zarządzanie błędami.

Pytanie 10

Przedstawiono funkcjonalnie równoważne fragmenty kodu aplikacji Angular oraz React.js.

Ilustracja do pytania
A. funkcję, która zapisuje do zmiennych f lub e dane z pola <input> formularza
B. funkcję, która wypełnia dane w formularzu podczas jego inicjalizacji
C. wyświetlanie w konsoli przeglądarki danych pobranych z pól formularza w czasie rzeczywistym, gdy użytkownik je wypełnia
D. obsługę zdarzenia przesłania formularza
Błędne odpowiedzi wynikają z niepoprawnego zrozumienia, jak działa obsługa zdarzeń w obu frameworkach. W przypadku Angulara i React.js, kluczową rolą przedstawionego kodu jest obsługa zdarzenia zatwierdzenia formularza, a nie wypisywanie danych w czasie rzeczywistym. Odpowiedzi sugerujące wypisywanie danych w konsoli w czasie rzeczywistym mylnie interpretują mechanizm działania komponentów. Takie działanie wymagałoby implementacji dodatkowych funkcji, które nasłuchiwałyby na zmiany wprowadzane do pól formularza, np. za pomocą zdarzenia onChange w React.js. Kolejna błędna idea to przypisanie danych do zmiennych f lub e. W przedstawionych fragmentach kodu zmienne te służą do przechwytywania zdarzenia submit lub referencji formularza, a nie do przypisywania danych. Zrozumienie, że zmienne te są istotne dla obsługi zdarzeń, jest kluczowe. Ponadto zakładanie, że funkcje wypełniają dane podczas inicjacji formularza, jest niepoprawne. Takie działanie wiązałoby się z inicjalizacją wartości formularza, co w ukazanych przykładach nie ma miejsca, ponieważ celem jest przetwarzanie danych w momencie zatwierdzenia formularza. To typowy błąd wynikający z niepełnego zrozumienia przepływu danych i cyklu życia komponentów w nowoczesnych frameworkach JavaScriptowych.

Pytanie 11

Zaprezentowany symbol odnosi się do

Ilustracja do pytania
A. domeny publicznej
B. prawa cytatu
C. Creative Commons
D. praw autorskich
Symbol Creative Commons oznacza licencję, która pozwala na ograniczone wykorzystanie utworu zgodnie z określonymi warunkami. Symbol praw autorskich informuje, że utwór jest objęty ochroną i wymaga zgody autora na jego wykorzystanie. Prawo cytatu pozwala na wykorzystanie fragmentów utworu, ale nie oznacza braku ochrony prawnej dla całości dzieła.

Pytanie 12

Co oznacza operator '===' w JavaScript?

A. Porównanie wartości i typów
B. Przypisanie wartości
C. Konkatenacja stringów
D. Porównanie wartości
Wiele osób może myśleć, że operator '==' w JavaScript wystarcza do porównania wartości, lecz to podejście niesie ze sobą ryzyko. Operator ten porównuje wartości i dokonuje automatycznej konwersji typów, co może prowadzić do nieoczekiwanych rezultatów. Na przykład, porównując '5' == 5, JavaScript przekształca stringa w liczbę, co skutkuje wynikiem true. Takie zachowanie może być mylące i prowadzić do błędów w logice programu. W przypadku operatora '=' sytuacja jest jeszcze inna. Ten operator służy do przypisania wartości, a nie do jej porównania. Dlatego użycie '=' w kontekście porównania dwóch wartości jest fundamentalnym błędem, który może zniszczyć logikę programu. Co do konkatenacji stringów, operator '+' jest stosowany, a nie '==', co również pokazuje, jak istotne jest zrozumienie podstawowych zasad użycia operatorów w JavaScript. W kontekście dobrych praktyk programistycznych, użycie operatora '===' jest kluczowe dla zapewnienia poprawności kodu, a unikanie operatora '==' powinno być standardem w każdej aplikacji. Dlatego tak ważne jest, aby dobrze zrozumieć różnice i zastosowanie odpowiednich operatorów, co w praktyce przyczyni się do tworzenia bardziej niezawodnych i czytelnych aplikacji.

Pytanie 13

Który z wymienionych elementów UI w aplikacjach mobilnych jest odpowiedzialny za przechodzenie pomiędzy ekranami?

A. Przycisk
B. Pasek narzędziowy
C. ListView
D. Navigation Drawer
Przycisk (Button) jest podstawowym elementem interfejsu użytkownika, ale nie spełnia funkcji nawigacyjnej na poziomie strukturalnym – jego zastosowanie ogranicza się do wywoływania pojedynczych akcji po kliknięciu. ListView to komponent wyświetlający listę elementów, ale nie odpowiada za nawigację pomiędzy ekranami aplikacji, a jedynie za prezentację danych. Pasek narzędziowy (Toolbar) to element, który zwykle znajduje się na górze ekranu i umożliwia dostęp do opcji takich jak wyszukiwanie lub ustawienia, ale nie pełni funkcji bocznego menu nawigacyjnego, jak Navigation Drawer.

Pytanie 14

Czym jest klasa w programowaniu obiektowym?

A. zmienna
B. wskaźnik
C. instrukcja
D. typ danych
Klasa w programowaniu obiektowym jest typem danych, który pozwala na definiowanie własnych struktur zawierających pola (dane) i metody (funkcjonalność). Klasy są podstawą paradygmatu obiektowego i umożliwiają tworzenie obiektów, które są instancjami danej klasy. Klasa definiuje szablon dla obiektów, określając ich zachowanie i właściwości.

Pytanie 15

Jaką nazwę nosi framework CSS, który służy do definiowania wyglądu stron internetowych i którego klasy są użyte w przedstawionym przykładzie?

Ilustracja do pytania
A. Yaml
B. Symfony
C. Angular
D. Bootstrap
Bootstrap jest jednym z najpopularniejszych frameworków CSS używanych do tworzenia responsywnych aplikacji internetowych. Jest to zestaw narzędzi open-source, który oferuje gotowe klasy CSS oraz komponenty JavaScript, ułatwiające projektowanie interfejsów użytkownika. W podanym przykładzie klasy takie jak 'col-sm-3' 'col-md-6' i 'col-lg-4' odnoszą się do siatki Bootstrapowej, która umożliwia elastyczne rozplanowanie elementów na stronie w zależności od rozmiaru ekranu. Klasa 'btn-primary' stosowana jest w Bootstrapie do stylizacji przycisków w sposób, który pasuje do domyślnych kolorów motywu. Z kolei 'dropdown-toggle' jest używana do obsługi rozwijanych list. Dzięki Bootstrapowi można z łatwością tworzyć nowoczesne i estetyczne aplikacje, które są zgodne z zasadami responsywnego web designu, co jest kluczowym standardem w dzisiejszej branży. Użycie Bootstrapu przyspiesza proces developmentu, pozwalając skupić się na funkcjonalności i logice aplikacji, zamiast na ręcznym stylizowaniu elementów.

Pytanie 16

Jakie polecenie w Gicie jest używane do zapisywania zmian w lokalnym repozytorium?

A. git pull
B. git commit
C. git push
D. git clone
Polecenie 'git push' przesyła zapisane lokalnie commity do zdalnego repozytorium, ale samo w sobie nie zapisuje zmian lokalnie. 'git clone' kopiuje istniejące repozytorium zdalne na komputer lokalny, co jest pierwszym krokiem do pracy z kodem, ale nie służy do zapisywania zmian. 'git pull' pobiera najnowsze zmiany z repozytorium zdalnego i scala je z lokalnym repozytorium, co umożliwia aktualizację kodu, ale nie zapisuje nowych zmian lokalnie jak 'git commit'.

Pytanie 17

Jakie znaczenie ma termin "przesłanianie metody" w kontekście programowania obiektowego?

A. Przenoszenie metod z jednej klasy do drugiej
B. Zmiana metody prywatnej na metodę publiczną
C. Tworzenie nowej metody w klasie bazowej
D. Zastosowanie tej samej nazwy metody w klasie bazowej i pochodnej, ale z inną implementacją w klasie pochodnej
Definiowanie nowej metody w klasie bazowej to zwykła deklaracja metody i nie jest to przesłanianie. Zamiana metody prywatnej na publiczną to zmiana modyfikatora dostępu, a nie przesłanianie. Kopiowanie metod z jednej klasy do innej nie jest związane z przesłanianiem – kopiowanie kodu narusza zasadę DRY (Don't Repeat Yourself) i jest rzadko stosowane w dobrze zaprojektowanych aplikacjach obiektowych.

Pytanie 18

Które z wymienionych praw autorskich nie wygasa po pewnym czasie?

A. Prawa pokrewne
B. Licencje wolnego oprogramowania
C. Autorskie prawa osobiste
D. Autorskie prawa majątkowe
Autorskie prawa majątkowe wygasają zazwyczaj po 70 latach od śmierci autora, co oznacza, że po tym czasie utwory przechodzą do domeny publicznej. Prawa pokrewne, które dotyczą m.in. artystów wykonawców i producentów fonogramów, mają ograniczony czas trwania (zwykle 50 lat od publikacji). Licencje wolnego oprogramowania, takie jak GNU GPL, również podlegają określonym warunkom czasowym i mogą wygasnąć lub zostać zmienione, jeśli autor zdecyduje się na aktualizację licencji.

Pytanie 19

Który fragment kodu ilustruje zastosowanie rekurencji?

Ilustracja do pytania
A. Blok 4
B. Blok 3
C. Blok 1
D. Blok 2
Blok 2, 3 i 4 mogą zawierać iteracyjne pętle lub inne struktury sterujące, ale nie posiadają wywołań funkcji wewnątrz własnej definicji. Iteracja różni się od rekurencji, ponieważ nie korzysta z wywołań zwrotnych funkcji, co stanowi główną cechę rekurencji.

Pytanie 20

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

A. Zapisują wartości lokalne w funkcjach
B. Zawierają informacje opisujące stan obiektu
C. Umożliwiają przeprowadzanie operacji na obiektach
D. Określają globalne stałe programu
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 21

Jakie narzędzie wspiera tworzenie aplikacji desktopowych?

A. WPF
B. Angular
C. Symfony
D. Xamarin
WPF (Windows Presentation Foundation) to framework umożliwiający tworzenie aplikacji desktopowych na platformie Windows. Umożliwia projektowanie interfejsów użytkownika przy użyciu XAML.

Pytanie 22

Zapis w języku C# przedstawia definicję klasy Car, która:

Ilustracja do pytania
A. używa pól prywatnych klasy Vehicle
B. jest zaprzyjaźniona z klasą Vehicle
C. jest klasą podstawową (nie dziedziczy po innej klasie)
D. odziedzicza po Vehicle
Klasa bazowa to taka, która nie dziedziczy po żadnej innej klasie. Klasa zaprzyjaźniona to mechanizm bardziej charakterystyczny dla C++, natomiast korzystanie z pól prywatnych klasy Vehicle jest możliwe tylko wtedy, gdy są one oznaczone jako 'protected' lub 'internal'.

Pytanie 23

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

A. Protokół komunikacji między różnymi bazami danych
B. Technika optymalizacji ładowania zasobów statycznych
C. Mechanizm bezpieczeństwa, który określa, które domeny mogą uzyskiwać dostęp do zasobów na serwerze
D. Metoda udostępniania API dla aplikacji mobilnych
Odpowiedzi sugerujące, że CORS to protokół komunikacji między różnymi bazami danych, metoda udostępniania API dla aplikacji mobilnych, czy technika optymalizacji ładowania zasobów statycznych, nie oddają rzeczywistego znaczenia i zastosowania tego mechanizmu. CORS nie ma nic wspólnego z bazami danych jako takimi; jest to struktura regulująca, które domeny mogą uzyskiwać dostęp do zasobów serwera. To nie jest protokół, lecz zestaw zasad, które są interpretowane przez przeglądarki internetowe. Ponadto, CORS nie ma też związku z udostępnianiem API dla aplikacji mobilnych, ponieważ aplikacje mobilne mogą wykorzystywać CORS tylko w kontekście interakcji z serwerami, a nie są bezpośrednio związane z tym mechanizmem. Techniki optymalizacji ładowania zasobów statycznych również nie mają związku z CORS, gdyż ten mechanizm nie dotyczy samego procesu ładowania zasobów, lecz reguł dotyczących ich dostępności w różnych kontekstach pochodzenia. Często mylone są podstawowe pojęcia związane z bezpieczeństwem aplikacji webowych, co prowadzi do nieporozumień oraz błędnego rozumienia działania samych technologii sieciowych.

Pytanie 24

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

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

Pytanie 25

Jakie są kluczowe różnice pomiędzy strukturą (struct) a unią (union) w języku C?

A. Unia umożliwia dynamiczne przypisywanie typów danych, struktura natomiast nie
B. Unia nie jest obsługiwana przez kompilatory współczesnych języków
C. Struktura wymaga więcej miejsca w pamięci niż unia
D. Struktura przechowuje wiele wartości równocześnie, unia tylko jedną
Unia nie pozwala na dynamiczne typowanie danych – typ każdego pola jest zdefiniowany w czasie kompilacji, podobnie jak w strukturze. Struktura nie zajmuje więcej pamięci niż unia – zajmuje dokładnie tyle miejsca, ile potrzeba na przechowywanie wszystkich pól jednocześnie. Twierdzenie, że unia nie jest wspierana przez nowoczesne kompilatory, jest błędne – unie są integralną częścią standardu C i są szeroko wspierane we współczesnych środowiskach programistycznych.

Pytanie 26

Jakie działanie powinno się wykonać w pierwszym kroku, oceniając stan osoby poszkodowanej?

A. Wezwać ambulans
B. Sprawdzić, czy występuje krwawienie
C. Rozpocząć resuscytację krążeniowo-oddechową
D. Zadbać o własne bezpieczeństwo
Bezpieczeństwo to naprawdę ważna sprawa, kiedy oceniamy stan kogoś, kto uległ wypadkowi. Jak nie zadbamy o siebie, to możemy się sami narazić i to jeszcze bardziej skomplikować całą akcję ratunkową. Ruch uliczny, prąd, jakieś toksyczne substancje... to wszystko może być niebezpieczne. Dopiero jak mamy pewność, że jest ok w okolicy, możemy zająć się poszkodowanym i myśleć o dalszych krokach ratunkowych.

Pytanie 27

Jaki rodzaj ataku hakerskiego polega na bombardowaniu serwera ogromną ilością żądań, co prowadzi do jego przeciążenia?

A. Man-in-the-Middle
B. SQL Injection
C. DDoS
D. Phishing
Phishing to technika, która polega na oszukiwaniu użytkowników w celu uzyskania poufnych informacji, takich jak hasła czy numery kart kredytowych, poprzez podszywanie się pod zaufane źródła. Atakujący często wykorzystują fałszywe e-maile lub strony internetowe, które wyglądają jak oryginalne, aby nakłonić ofiary do ujawnienia swoich danych. Ta metoda nie ma nic wspólnego z przeciążaniem serwerów, lecz raczej z manipulacją ludzką. Man-in-the-Middle (MitM) to atak, w którym haker przechwytuje komunikację pomiędzy dwoma stronami, umożliwiając mu podsłuchiwanie lub nawet modyfikowanie przesyłanych danych. W tym przypadku celem nie jest przeciążenie serwera, ale raczej kradzież informacji lub wprowadzenie złośliwego kodu. SQL Injection jest techniką, w której atakujący wprowadza złośliwe zapytania SQL do aplikacji internetowej, co pozwala mu na dostęp do bazy danych i wykonanie nieautoryzowanych operacji. Ta metoda również nie dotyczy przeciążenia serwera, lecz naruszenia integralności danych. Wszystkie te techniki różnią się znacznie od ataku DDoS, który koncentruje się na zakłóceniu dostępności serwisu poprzez jego przeciążenie.

Pytanie 28

Który z poniższych składników NIE jest konieczny do stworzenia klasy w C++?

A. Deklaracja atrybutów klasy
B. Definicja funkcji członkowskich klasy
C. Zastosowanie słowa kluczowego class
D. Definicja destruktora
Do utworzenia klasy w C++ nie jest wymagana definicja destruktora. Destruktor to specjalna metoda klasy, która jest wywoływana automatycznie w momencie zniszczenia obiektu, ale jego obecność jest opcjonalna. Klasy, które nie operują bezpośrednio na zasobach zewnętrznych, takich jak dynamiczna pamięć lub pliki, często nie potrzebują destruktora, ponieważ domyślny destruktor generowany przez kompilator jest wystarczający. Aby utworzyć klasę, wystarczy deklaracja pól i metod oraz użycie słowa kluczowego 'class'. To sprawia, że C++ pozwala na szybkie definiowanie prostych klas, które można później rozwijać w miarę potrzeby.

Pytanie 29

Który z poniższych wzorców projektowych jest używany do tworzenia pojedynczej instancji klasy w całej aplikacji?

A. Observer
B. Decorator
C. Singleton
D. Factory
Wzorzec projektowy Singleton jest kluczowym rozwiązaniem w sytuacjach, gdy chcemy zapewnić istnienie tylko jednej instancji danej klasy w całej aplikacji. Singleton kontroluje instancję wewnętrznie, co oznacza, że niezależnie od tego, ile razy próbujemy stworzyć obiekt tej klasy, zawsze otrzymamy ten sam obiekt. W praktyce, wzorzec ten jest szeroko stosowany w sytuacjach, gdzie zarządzanie zasobami, takimi jak połączenia z bazą danych czy konfiguracyjne obiekty, musi być centralizowane. Przykładowo, przy użyciu wzorca Singleton możemy mieć jeden obiekt zarządzający połączeniem z bazą danych, co redukuje nadmiarowe zasoby i zwiększa wydajność. Istotne jest jednak, aby zaimplementować Singleton zgodnie z zasadami wielowątkowości, aby uniknąć problemów w aplikacjach równoległych, co jest zgodne z najlepszymi praktykami branżowymi. Dodatkowo, wzorzec ten podkreśla znaczenie zarządzania stanem aplikacji oraz przestrzegania zasad odpowiedzialności klas, co wspiera czystość i utrzymanie kodu.

Pytanie 30

Co oznacza pojęcie TDD w kontekście programowania?

A. Technical Design Document - dokumentacja techniczna projektu
B. Test-Driven Development - praktyka pisania testów przed implementacją kodu
C. Type Definition Document - dokumentacja typów danych w aplikacji
D. Task Deployment Diagram - schemat wdrażania zadań w projekcie
Test-Driven Development (TDD) to metodologia programowania, w której proces tworzenia kodu zaczyna się od pisania testów. TDD polega na cyklicznym podejściu do rozwoju oprogramowania, w którym najpierw definiujemy, jakie funkcjonalności będzie miał nasz kod, a następnie implementujemy tylko te elementy, które są niezbędne do przejścia wcześniej napisanych testów. Dzięki temu, deweloperzy mają możliwość natychmiastowego sprawdzenia poprawności swojego kodu, co sprzyja eliminacji błędów na wczesnym etapie. Przykład zastosowania TDD można zobaczyć w tworzeniu aplikacji webowych, gdzie programista pisze testy jednostkowe dla nowych funkcji, a następnie implementuje te funkcje, poprawiając kod tylko w przypadku, gdy testy nie przechodzą. Takie podejście pozwala na zwiększenie jakości oprogramowania oraz jego łatwiejszą refaktoryzację. Warto również zauważyć, że TDD jest zgodne z praktykami Agile i Continuous Integration, co pozwala na efektywniejsze zarządzanie projektem i dostosowywanie go do wymagań zmieniającego się rynku.

Pytanie 31

Na ilustracji pokazano fragment emulacji iOS z elementem kontrolnym. Który fragment kodu XAML opisuje ten element?

Ilustracja do pytania
A. <Stepper Increment= "1" />
B. <Slider Maximum= "255" />
C. <Switch IsToggled= "true" />
D. <Entry IsPassword= "true" />
Pole tekstowe z ukrytymi znakami (<Entry IsPassword= "true" />) służy do wprowadzania hasła. Ale suwak (<Slider Maximum= "255" />) działa trochę inaczej, bo wybierasz wartość z pewnego zakresu. No i Stepper to już całkiem inna bajka, bo pozwala na stopniowe zmniejszanie lub zwiększanie wartości. Każdy z tych elementów ma swoje zastosowanie i nie można ich mylić z przełącznikiem.

Pytanie 32

Co będzie wynikiem wykonania poniższego kodu w języku C#?

string text = "hello world"; var result = string.Join("", text.Split(' ').Select(s => char.ToUpper(s[0]) + s.Substring(1))); Console.Console.WriteLine(result);
A. HelloWorld
B. Hello World
C. helloworld
D. HELLO WORLD
Wynikiem wykonania kodu nie jest 'HELLO WORLD', a przyczyna tego nieporozumienia tkwi w sposobie przetwarzania tekstu. Warto zauważyć, że kod nie wykonuje prostej konwersji wszystkich liter na wielkie, jak sugeruje ta odpowiedź. Zamiast tego, każda pierwsza litera każdego słowa jest zmieniana na wielką, a pozostałe litery pozostają w oryginalnym stanie, co w przypadku 'hello world' daje wyrażenie 'Hello World'. To zrozumienie jest kluczowe w programowaniu, ponieważ często błędnie zakładamy, że transformacje na tekstach działają w sposób jednorodny. Inną niepoprawną odpowiedzią jest 'helloworld', która również pomija konwersję pierwszych liter na wielkie, co jest kluczowym aspektem działania kodu. Warto rozważyć, że przy pracy z tekstami w C# istotne są szczegóły, takie jak wielkość liter, a dobre praktyki programistyczne wymagają zrozumienia, jak funkcje manipulujące tekstem działają. Niepoprawne odpowiedzi często wynikają z niezrozumienia schematu, jakim jest łączenie, a nie tylko konwersji liter. Użytkownicy powinni zawsze testować swoje założenia poprzez praktyczne próby w kodowaniu, aby unikać takich nieporozumień.

Pytanie 33

Która z poniższych metod tablicowych w JavaScript nie modyfikuje oryginalnej tablicy?

A. splice()
B. sort()
C. push()
D. map()
Wybór metod, które modyfikują oryginalną tablicę w JavaScript, może prowadzić do nieporozumień, szczególnie dla osób rozpoczynających przygodę z tym językiem programowania. Metody takie jak splice(), sort() czy push() wprowadzają zmiany w oryginalnych danych, co może skutkować niezamierzonymi efektami ubocznymi. Na przykład, splice() jest używane do usuwania lub dodawania elementów w tablicy, co bezpośrednio zmienia jej strukturę. Z kolei sort() zmienia kolejność elementów w tablicy na podstawie kryteriów porównania, co może prowadzić do utraty dotychczasowego porządku, jeśli oryginalna tablica jest nadal potrzebna w jej pierwotnej formie. Push() natomiast dodaje nowe elementy na końcu tablicy, co zwiększa jej długość oraz może wpłynąć na logikę aplikacji, jeżeli elementy są wykorzystywane w innych częściach kodu. Te metody mogą prowadzić do typowych błędów myślowych, takich jak założenie, że operacje na danych są statyczne i nie wpływają na ich oryginalne formy. Dlatego w praktyce programistycznej, szczególnie w większych i bardziej złożonych projektach, istotne jest, aby być świadomym, jakie metody wpływają na oryginalne dane, aby uniknąć przypadkowych błędów oraz nieprzewidzianych konsekwencji. Używanie funkcji, które nie zmieniają oryginalnej tablicy, takich jak map(), cieszy się dużą popularnością i jest zgodne z najlepszymi praktykami w programowaniu funkcyjnym.

Pytanie 34

Jakie jest przeznaczenie polecenia "git merge"?

A. Do łączenia zmian z różnych gałęzi
B. Do usuwania zmian w repozytorium
C. Do pobierania aktualizacji zdalnego repozytorium
D. Do zakładania nowego repozytorium
Polecenie 'git merge' służy do łączenia zmian z jednej gałęzi (branch) z inną. Najczęściej używane jest do scalenia gałęzi deweloperskich (feature branches) z gałęzią główną (main lub master). Git merge pozwala na integrację nowych funkcji z głównym kodem projektu, co jest kluczowe w pracy zespołowej. W przypadku konfliktów, Git wymaga ręcznego rozwiązania ich przed zakończeniem procesu scalania. Umożliwia to zachowanie porządku w kodzie i unikanie błędów, które mogłyby wyniknąć z niezgodnych zmian.

Pytanie 35

Jakie jest rozwiązanie dla dodawania binarnego liczb 1011 oraz 110?

A. 11001
B. 11101
C. 10101
D. 10001
W analizie błędnych odpowiedzi, pierwsza niepoprawna odpowiedź 11001 wynika z błędu w dodawaniu ostatniej kolumny. Osoba, która udzieliła tej odpowiedzi, mogła popełnić pomyłkę, nie uwzględniając przeniesienia z drugiej kolumny. W systemie binarnym nie można uzyskać wyniku 11001, ponieważ suma 0 + 1 w ostatnich kolumnach prowadzi do przeniesienia, a nie do dodania wartości. Druga propozycja, 10101, może być efektem pomylenia wartości i przeniesień w trakcie dodawania. Wartości w odpowiednich kolumnach są zinterpretowane niepoprawnie. Tutaj również brakuje uwzględnienia przeniesienia, co prowadzi do wyniku, który nie odzwierciedla rzeczywistego sumowania w systemie binarnym. Ostatnia niepoprawna odpowiedź, 11101, zawiera błąd związany z dodawaniem wartości bez przeniesienia. Sumowanie 1 + 1 w drugiej kolumnie prowadzi do 0 z przeniesieniem, co zostało pominięte. W każdej z tych odpowiedzi występuje zrozumienie błędów w arytmetyce binarnej, które są fundamentalne dla prawidłowego obliczania w systemach cyfrowych.

Pytanie 36

Wskaż typy numeryczne o stałej precyzji

A. float, double
B. bool char, string
C. long long, long double
D. int, short, long
Float i double to typy zmiennoprzecinkowe, przechowujące liczby z częściami ułamkowymi. Bool, char i string to typy znakowe i logiczne, nie liczbowe. Long long i long double to typy zmiennoprzecinkowe i całkowite, ale nie wszystkie należą do grupy stałoprzecinkowych.

Pytanie 37

Który z frameworków pozwala na tworzenie aplikacji z graficznym interfejsem użytkownika oraz obsługą wydarzeń?

A. Qt
B. Django
C. Express.js
D. TensorFlow
Django to framework do tworzenia aplikacji webowych w języku Python, a nie narzędzie do budowy aplikacji desktopowych z interfejsem graficznym. TensorFlow to biblioteka do uczenia maszynowego i sztucznej inteligencji, która nie ma bezpośredniego związku z projektowaniem GUI. Express.js to framework dla Node.js, który służy do budowy aplikacji serwerowych i API, ale nie jest narzędziem do projektowania interfejsów użytkownika w aplikacjach desktopowych.

Pytanie 38

Jakie narzędzie służy do zarządzania wersjami?

A. Jira
B. Bugzilla
C. Trello
D. Git
Trello – To narzędzie do zarządzania projektami, a nie kontroli wersji. Jira – Służy do śledzenia błędów i zarządzania zadaniami, ale nie do kontroli wersji. Bugzilla – Jest systemem do zarządzania błędami, ale nie obsługuje kontroli wersji kodu.

Pytanie 39

Jakie stwierdzenie najlepiej tłumaczy cel podziału programu na funkcje (metody)?

A. Gwarantuje automatyczną kompilację programu
B. Ułatwia proces debugowania oraz ponowne wykorzystanie fragmentów kodu
C. Eliminuje potrzebę korzystania ze zmiennych globalnych
D. Umożliwia skrócenie kodu przez eliminację wszelkich komentarzy
Dzielenie programu na funkcje (lub metody) jest jedną z kluczowych zasad programowania strukturalnego i obiektowego. Funkcje pozwalają na podzielenie dużych bloków kodu na mniejsze, łatwiejsze do zarządzania i ponownego wykorzystania fragmenty. Dzięki temu kod jest bardziej czytelny, zrozumiały i łatwiejszy do testowania. Ułatwia to także proces debugowania, ponieważ błędy można izolować w konkretnych funkcjach, zamiast przeszukiwać cały program. Ponadto funkcje umożliwiają wielokrotne używanie tego samego fragmentu kodu, co zwiększa efektywność i eliminuje konieczność powielania kodu, zmniejszając ryzyko błędów.

Pytanie 40

Który z wymienionych składników wchodzi w skład podstawowego wyposażenia środowiska IDE?

A. Edytor tekstowy, przeglądarka internetowa, translator
B. Edytor graficzny, przeglądarka kodu, narzędzia analityczne
C. Kompilator, edytor kodu, debugger
D. Kompilator, serwer webowy, system kontroli wersji
Edytor tekstowy, przeglądarka internetowa i translator nie są integralnymi komponentami środowiska IDE. Chociaż edytor tekstowy może być używany do pisania kodu, brakuje mu zaawansowanych funkcji dostępnych w edytorach IDE, takich jak podpowiedzi składniowe, automatyczne uzupełnianie kodu czy narzędzia do debugowania. Kompilator, serwer webowy i system kontroli wersji są ważne w środowisku webowym, ale nie wszystkie aplikacje desktopowe wymagają serwera webowego. Edytor graficzny i narzędzia analityczne mogą wspierać rozwój interfejsu, ale nie są to podstawowe narzędzia każdego IDE.