Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 28 kwietnia 2025 14:22
  • Data zakończenia: 28 kwietnia 2025 14:24

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

Jaka będzie złożoność czasowa wyszukiwania w posortowanej tablicy przy użyciu algorytmu binarnego?

A. O(n)
B. O(n log n)
C. O(log n)
D. O(n²)
Wybierając inne odpowiedzi, można napotkać typowe błędy w myśleniu o złożoności algorytmów wyszukiwania. Odpowiedź O(n) sugeruje, że czas wyszukiwania rośnie liniowo z liczbą elementów w tablicy, co jest charakterystyczne dla prostego algorytmu liniowego. Taki algorytm przeszukuje każdy element, co jest czasochłonne, zwłaszcza w przypadku dużych zbiorów danych. Z kolei O(n²) reprezentuje złożoność czasową, która mogłaby wystąpić w algorytmach sortujących, takich jak sortowanie bąbelkowe, a nie w wyszukiwaniu. Takie zrozumienie złożoności może prowadzić do nieefektywnych rozwiązań w praktyce. Odpowiedź O(n log n) wskazuje na złożoność czasową algorytmów sortujących, co również nie ma zastosowania w kontekście samego wyszukiwania. Warto zauważyć, że przy wyborze algorytmu do wyszukiwania danych, kluczowe jest zrozumienie, jakie operacje są wykonywane na danych i jakie są ich struktury, co wpływa na wybór najlepszej strategii. Wysoka złożoność algorytmów wyszukiwania może prowadzić do znacznych opóźnień w aplikacjach wymagających szybkiej reakcji. Dlatego tak ważne jest zrozumienie zasadności wykorzystania algorytmu binarnego w odpowiednich kontekstach.

Pytanie 2

Na schemacie widoczny jest fragment diagramu blokowego pewnego algorytmu. Ile razy zostanie zweryfikowany warunek n<7?

Ilustracja do pytania
A. 5
B. 8
C. 6
D. 7
Warunek 'n < 7' będzie sprawdzany dokładnie 6 razy. To dlatego, że w klasycznej pętli for czy while liczba powtórzeń jest zawsze o jeden mniejsza niż wartość graniczna. Jak widzisz, w takich schematach liczba porównań idzie w parze z liczbą iteracji, a pętla zatrzymuje się, jak tylko warunek zostanie spełniony.

Pytanie 3

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

A. Pozwala na dynamiczne dodawanie nowych metod
B. Ogranicza dostęp do metod publicznych w klasie
C. Automatycznie likwiduje obiekty klasy po zakończeniu działania programu
D. Zachowuje wspólną wartość dla wszystkich instancji tej klasy
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 4

Jak zrealizować definiowanie własnego wyjątku w języku C++?

A. Utworzyć klasę, która dziedziczy po std::exception
B. Automatycznie wywołać funkcję throw
C. Wykorzystać blok try z pustym blokiem catch
D. Skorzystać z domyślnej metody obsługi błędów
Aby zdefiniować własny wyjątek w języku C++, należy stworzyć klasę dziedziczącą po standardowej klasie 'std::exception' lub jednej z jej pochodnych. Klasa ta może zawierać własne metody i pola, dostosowując obsługę błędów do specyficznych potrzeb aplikacji. Dziedziczenie z 'std::exception' umożliwia korzystanie z funkcji takich jak 'what()', która zwraca opis błędu. Dzięki temu programista może precyzyjnie określić typ i przyczynę wyjątku, co prowadzi do bardziej czytelnego i łatwiejszego w utrzymaniu kodu. Tworzenie własnych wyjątków jest szczególnie przydatne w dużych projektach, gdzie występuje potrzeba kategoryzacji i obsługi różnych typów błędów w zależności od ich źródła.

Pytanie 5

Który z wymienionych typów kolekcji pozwala na dostęp do ostatnio dodanego elementu w pierwszej kolejności?

A. Kolejka
B. Tablica dwuwymiarowa
C. Lista
D. Stos
Lista to struktura liniowa, która umożliwia dostęp do dowolnego elementu, ale nie działa na zasadzie LIFO. Kolejka działa zgodnie z zasadą FIFO (First In First Out) i przechowuje elementy w kolejności ich dodania. Tablica dwuwymiarowa to struktura do przechowywania danych w postaci macierzy, ale nie działa na zasadzie LIFO ani FIFO, lecz umożliwia dostęp do danych za pomocą indeksów.

Pytanie 6

Jakie narzędzie najlepiej sprawdza się w przekształcaniu liczby szesnastkowej na binarną?

A. Program do edycji tekstu
B. Kalkulator programisty
C. Aplikacja internetowa
D. Program do arkuszy kalkulacyjnych
Edytor tekstowy, mimo że jest powszechnie używany do edycji tekstu, nie jest narzędziem odpowiednim do konwersji liczby szesnastkowej na binarną. Nie zawiera on wbudowanych funkcji matematycznych ani konwersji systemów liczbowych, a jego głównym celem jest przechowywanie i formatowanie tekstu. Użytkownik musiałby ręcznie przeliczać wartości, co jest nieefektywne i podatne na błędy. Arkusz kalkulacyjny również nie jest idealnym rozwiązaniem w tej sytuacji. Chociaż ma możliwość wykonywania obliczeń, nie jest zoptymalizowany do bezpośredniej konwersji między systemami liczbowymi. Użytkownik musiałby wprowadzać złożone formuły i funkcje, co wymagałoby dodatkowej wiedzy i straty czasu. Przeglądarka internetowa, pomimo że może zapewniać dostęp do różnych narzędzi online do konwersji, nie jest sama w sobie narzędziem do konwersji liczby szesnastkowej na binarną. Wymaga dodatkowych kroków, takich jak wyszukiwanie odpowiednich stron internetowych, co wprowadza dodatkową warstwę złożoności i potencjalnych błędów. W przypadku konwersji liczb, skuteczność i precyzja są kluczowe, a narzędzia, które nie są specjalnie zaprojektowane do tego celu, mogą nie spełniać wymagań użytkowników.

Pytanie 7

W aplikacji mobilnej, aby określić warianty grafiki w zależności od wielkości ekranu, należy (uwaga: odpowiedzi wariantowe dla dwóch systemów - sugerować się systemem omawianym na zajęciach)

A. iOS: dodać do nazw sufiksy oznaczające rozdzielczość, np. 32ppi. Android: umieścić grafikę w odpowiednich katalogach: 32ppi, 64ppi, 96ppi
B. iOS: utworzyć katalogi hdpi, lhpi, xhpi i dodać do nich grafiki. Android: utworzyć katalogi 32x32, 64x64, 96x96 i dodać do nich grafiki
C. iOS: dodać do nazw plików sufiksy @2x, @3x. Android: umieścić grafikę w odpowiednich folderach drawable: -hdpi, -xhpi, xxhdpi
D. iOS: dodać do nazw sufiksy #2x, #3x. Android: dodać do nazw sufiks rozdzielczości: -32x32, -64x64, -96x96
Lepiej nie używać oznaczeń w stylu 32ppi czy 64ppi, bo to nie pasuje do żadnej z tych platform. To bardziej pasuje do druku, a nie aplikacji mobilnych. Foldery 32x32 czy 64x64 też nie mają sensu w kontekście Androida czy iOS. Jak stworzysz foldery o nazwach lhpi czy 32x32 to może być problem z wyświetlaniem grafiki na różnych urządzeniach. Z mojego doświadczenia, lepiej trzymać się ustalonych standardów, żeby uniknąć błędów.

Pytanie 8

Jakie jest podstawowe środowisko do tworzenia aplikacji desktopowych przy użyciu języka C#?

A. MS Visual Studio
B. NetBeans
C. PyCharm
D. Eclipse
MS Visual Studio to potężne zintegrowane środowisko programistyczne (IDE) zaprojektowane przez firmę Microsoft, które oferuje pełne wsparcie dla języka C#. Dzięki bogatym funkcjom, takim jak IntelliSense, które ułatwia pisanie kodu poprzez podpowiadanie składni oraz dostępność narzędzi do debugowania, programiści mogą efektywnie rozwijać aplikacje desktopowe. MS Visual Studio obsługuje różne frameworki, takie jak .NET Framework oraz .NET Core, co pozwala na budowanie aplikacji o różnej architekturze. W praktyce, programiści mogą tworzyć aplikacje w oparciu o Windows Presentation Foundation (WPF) lub Windows Forms, co umożliwia tworzenie rozbudowanych interfejsów użytkownika. Dodatkowo, MS Visual Studio oferuje szereg narzędzi do współpracy zespołowej, integracji z systemami kontroli wersji oraz wsparcie dla testowania jednostkowego. Jako standard w branży, MS Visual Studio jest często preferowanym wyborem w projektach komercyjnych i korporacyjnych, z uwagi na jego wszechstronność oraz wsparcie ze strony społeczności programistycznej.

Pytanie 9

Jakie jest podstawowe zadanie wykorzystania frameworka Node.js w aplikacjach internetowych?

A. Kreowanie graficznego interfejsu użytkownika
B. Weryfikacja API
C. Zarządzanie aplikacjami serwerowymi i realizacja przetwarzania asynchronicznego
D. Budowanie aplikacji mobilnych
Node.js to w zasadzie takie środowisko, które pozwala na uruchamianie JavaScriptu na serwerze. Dzięki temu można budować różne aplikacje serwerowe i radzić sobie z asynchronicznym przetwarzaniem. Fajnie, że Node.js może obsługiwać wiele połączeń jednocześnie, co sprawia, że nadaje się do aplikacji, które mają dużo użytkowników, jak czaty czy różne API. Jest to dość wydajne rozwiązanie dzięki architekturze opartej na zdarzeniach, więc nie zajmuje za dużo zasobów. Co ciekawe, używając Node.js, można pisać kod zarówno na serwerze, jak i na kliencie, co jest naprawdę dużą oszczędnością czasu.

Pytanie 10

W zaprezentowanym kodzie stworzono abstrakcyjną klasę Figura oraz klasę Prostokąt, która po niej dziedziczy, zawierającą określone pola i konstruktory. Wskaż najprostszą implementację sekcji /* metody klasy */ dla klasy Prostokąt

Ilustracja do pytania
A. Kod 2
B. Kod 1
C. Kod 4
D. Kod 3
Niepoprawne odpowiedzi wynikają z niepełnego zrozumienia koncepcji abstrakcji i dziedziczenia w programowaniu obiektowym Klasa abstrakcyjna w języku Java definiuje metody abstrakcyjne które muszą być zaimplementowane w każdej klasie dziedziczącej Jest to kluczowa zasada która pozwala na tworzenie elastycznych i rozszerzalnych struktur kodu Odpowiedzi które nie implementują wymaganych metod Pole i Obwod w klasie Prostokąt łamią tę zasadę Kod 2 pomija implementację metody Obwod co oznacza że klasa Prostokąt pozostaje niekompletna i nie może być instancjonowana Inne podejścia jak te w Kodzie 3 zmieniają nazwę metod na LiczPole i LiczObwod co nie spełnia kontraktu zdefiniowanego przez klasę Figura ponieważ nie zachowuje integralności interfejsu klasy bazowej Próbując używać abstrakcyjnych metod z implementacją jak w Kodzie 4 łamiemy fundamentalne zasady projektowania obiektowego Zrozumienie tych koncepcji jest kluczowe przy projektowaniu aplikacji które wymagają skalowalności i łatwości utrzymania Praktykując poprawne stosowanie abstrakcji możemy tworzyć kod który jest bardziej modularny elastyczny i odporny na zmiany co prowadzi do bardziej efektywnego procesu rozwoju oprogramowania

Pytanie 11

Co to jest IndexedDB?

A. Indeks danych używany przez wyszukiwarki internetowe
B. System zarządzania bazami SQL w aplikacjach backendowych
C. Niskopoziomowe API do przechowywania dużych ilości danych w przeglądarce użytkownika
D. Format indeksowania danych w bazach NoSQL
IndexedDB to niskopoziomowe API, które umożliwia przechowywanie dużych ilości danych bezpośrednio w przeglądarce użytkownika. Dzięki temu programiści mogą tworzyć aplikacje webowe, które wykorzystują lokalne bazy danych, co pozwala na szybki dostęp do informacji, a także na pracę offline. IndexedDB jest asynchroniczny, co oznacza, że operacje na bazie danych nie blokują interfejsu użytkownika, co jest zgodne z dobrymi praktykami w tworzeniu responsywnych aplikacji webowych. Przykłady zastosowania to aplikacje e-commerce, które mogą przechowywać historię zakupów czy koszyk użytkownika lokalnie, co zwiększa wydajność i komfort użytkowania. Warto również zwrócić uwagę, że IndexedDB obsługuje obiekty JavaScript, co umożliwia przechowywanie złożonych struktur danych. Standardy związane z IndexedDB są częścią W3C i są szeroko wspierane przez nowoczesne przeglądarki, co czyni tę technologię wiarygodnym rozwiązaniem do przetwarzania danych w aplikacjach webowych.

Pytanie 12

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

A. window.render
B. window.onload
C. document.ready
D. page.complete
Wszystkie inne odpowiedzi, takie jak "document.ready", "page.complete" oraz "window.render", są niepoprawne w kontekście pytania o zdarzenie wywoływane po całkowitym załadowaniu strony. Odpowiedź "document.ready" odnosi się do jQuery, a nie do czystego JavaScript. To zdarzenie wywoływane jest, gdy DOM jest załadowany, ale niekoniecznie wszystkie zasoby, takie jak obrazy czy arkusze stylów, są już dostępne. Używanie tego zdarzenia może prowadzić do nieporozumień, gdyż programiści mogą zakładać, że strona jest gotowa do pełnej interakcji, gdy w rzeczywistości zachowanie różnych elementów może się różnić w zależności od ładowania zasobów. Z kolei "page.complete" nie jest standardowym zdarzeniem w JavaScript i nie istnieje w dokumentacji, co czyni tę odpowiedź całkowicie błędną. "window.render" również nie jest znanym zdarzeniem w kontekście JavaScript, co może prowadzić do nieporozumień wśród programistów. Używanie niepoprawnych terminów lub zrozumienie ich znaczenia może prowadzić do błędów w kodzie, które z kolei skutkują nieprawidłowym działaniem aplikacji. Dlatego tak ważne jest, aby znać dokładne zdarzenia i ich zastosowanie w kontekście pełnego ładowania strony, co ma kluczowe znaczenie w tworzeniu responsywnych i dobrze działających aplikacji internetowych.

Pytanie 13

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

A. Metoda kompresji obrazów przed wysłaniem na serwer
B. Protokół transferu obrazów między serwerem a przeglądarką
C. Format przechowywania obrazów w pamięci podręcznej przeglądarki
D. Technika ładowania obrazów dopiero w momencie, gdy stają się widoczne dla użytkownika
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, 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 14

Jaką wartość dziesiętną reprezentuje liczba binarna 1010?

A. 8
B. 14
C. 10
D. 12
Odpowiedzi 8, 12 i 14 są błędne w kontekście konwersji liczby binarnej 1010 na wartość dziesiętną. Liczba 8 w systemie dziesiętnym odpowiada binarnej wartości 1000. W tym przypadku, 1 * 2^3 daje 8, co oznacza, że w zapisie binarnym nie ma cyfr odpowiadających wartościom 2^2, 2^1 oraz 2^0. Liczba 12 w systemie dziesiętnym jest reprezentowana jako 1100 w systemie binarnym, co oznacza, że ma ona 1 na pozycji 2^3, 1 na pozycji 2^2, a 0 na pozycjach 2^1 oraz 2^0. Natomiast liczba 14 jest reprezentowana jako 1110 w systemie binarnym, co wskazuje, że ma 1 na pozycjach 2^3, 2^2 oraz 2^1, a 0 na pozycji 2^0. W każdym z tych przypadków, niepoprawne odpowiedzi wynikają z błędnej interpretacji wartości binarnych oraz ich odpowiedników w systemie dziesiętnym. Zrozumienie systemów liczbowych jest kluczowe w informatyce i inżynierii, ponieważ liczby binarne są podstawą funkcjonowania komputerów oraz cyfrowych systemów obliczeniowych. Dlatego tak ważne jest precyzyjne wykonanie konwersji oraz znajomość reguł związanych z tym procesem.

Pytanie 15

Na równoważnych pod względem funkcjonalnym listingach fragmentów aplikacji Angular oraz React.js utworzono listę punktowaną, która zawiera

Ilustracja do pytania
A. wyłącznie jeden element o treści Harry Potter, Hobbit, Władca pierścieni
B. jedynie jeden element o treści Harry Potter
C. tyle elementów, ile znajduje się w tablicy books, w każdym punkcie listy widnieje element o treści {book}
D. taką liczbę elementów, ile znajduje się w tablicy books, w każdym punkcie listy umieszczony jest jeden element tablicy
Lista punktowana nie zawiera wszystkich elementów w jednej pozycji listy, dlatego opcja przedstawiająca tylko jeden punkt z całą treścią (np. Harry Potter, Hobbit) jest błędna. Inna odpowiedź sugeruje, że treść wyświetlana jest jako {book}, co oznacza, że nie nastąpiła interpolacja zmiennych, co jest błędem składniowym lub logicznym.

Pytanie 16

Który z komponentów interfejsu użytkownika umożliwia użytkownikowi wprowadzanie danych tekstowych?

A. Dialog wyboru pliku
B. Pole tekstowe
C. Pasek narzędziowy
D. Przycisk
Przycisk to element interfejsu, który umożliwia inicjalizowanie akcji, ale nie pozwala na wprowadzanie danych tekstowych. Pasek narzędziowy służy do grupowania skrótów do często używanych funkcji i nie jest przeznaczony do edycji tekstu. Dialog wyboru pliku umożliwia przeglądanie systemu plików i wybór plików do załadowania, co nie jest tożsame z funkcją wprowadzania tekstu przez użytkownika.

Pytanie 17

Które z poniższych twierdzeń najlepiej charakteryzuje metodę wirtualną?

A. Metoda, która może być przesłonięta w klasie dziedziczącej
B. Metoda, która działa wyłącznie dla statycznych pól danej klasy
C. Metoda, która może być wywoływana tylko przez klasę nadrzędną
D. Metoda, która jest zawsze stosowana w konstruktorach danej klasy
Metoda, która może być wywoływana tylko przez klasę bazową to raczej metoda prywatna lub chroniona, a nie wirtualna. Metody statyczne są związane z klasą, a nie z konkretnymi obiektami, więc nie można ich tak po prostu nadpisać w klasie pochodnej. A tak w ogóle, metody w konstruktorach zazwyczaj nie są wirtualne, bo wywołanie metod wirtualnych w konstruktorze może prowadzić do dziwnych rzeczy – w konstruktorze klasy bazowej składowe klasy pochodnej jeszcze nie są gotowe.

Pytanie 18

Który z poniższych opisów najlepiej charakteryzuje system informatyczny?

A. Oprogramowanie wspierające jedynie zarządzanie danymi osobowymi
B. Zbiór urządzeń technicznych używanych w pracy biurowej
C. Sieć komputerowa, która umożliwia komunikację pomiędzy użytkownikami
D. Zespół ludzi, procedur, oprogramowania i sprzętu służący do przetwarzania danych
System informatyczny to kompleksowy zbiór elementów, który obejmuje ludzi, procedury, oprogramowanie oraz sprzęt, mający na celu przetwarzanie danych w sposób efektywny i zorganizowany. Kluczowym aspektem systemu informatycznego jest jego zdolność do integracji różnych komponentów w celu realizacji określonych zadań i osiągania wyznaczonych celów. Przykładem może być system ERP (Enterprise Resource Planning), który integruje finanse, produkcję, sprzedaż oraz zarządzanie zasobami ludzkimi w jednym środowisku. Takie zintegrowane podejście umożliwia nie tylko efektywne zarządzanie danymi, ale również generowanie raportów, analizę trendów oraz podejmowanie informowanych decyzji. Standardy, takie jak ITIL (Information Technology Infrastructure Library) czy CMMI (Capability Maturity Model Integration), podkreślają znaczenie procedur i zarządzania w kontekście systemów informatycznych, co wpływa na jakość usług i zadowolenie użytkowników. Systemy informatyczne są wykorzystywane w różnych branżach, od finansów po opiekę zdrowotną, gdzie przetwarzanie i zarządzanie danymi jest kluczowe dla efektywności operacyjnej.

Pytanie 19

W zaprezentowanym kodzie zostało ukazane jedno z fundamentalnych założeń programowania obiektowego. Czym ono jest?

Ilustracja do pytania
A. hermetyzacja
B. abstrakcja
C. dziedziczenie
D. polimorfizm
Polimorfizm to taka bardziej skomplikowana sprawa, chodzi o to, że metody mogą działać na różne sposoby, ale nie to jest tu w głównym fokusie. Abstrakcja z kolei wiąże się z ukrywaniem detali implementacji, ale nie jest to kluczowy temat w tym kodzie. Hermetyzacja to pojęcie dotyczące ukrywania danych w klasach, ale też nie o tym mówimy w tej konkretnej sytuacji.

Pytanie 20

Który z wymienionych frameworków jest charakterystyczny dla aplikacji komputerowych pisanych w C#?

A. React
B. WPF (Windows Presentation Foundation)
C. Qt
D. Spring
WPF (Windows Presentation Foundation) to framework firmy Microsoft, który jest powszechnie wykorzystywany do tworzenia aplikacji desktopowych w języku C#. WPF pozwala na projektowanie zaawansowanych interfejsów użytkownika (UI) z wykorzystaniem XAML (Extensible Application Markup Language), co umożliwia oddzielenie logiki aplikacji od warstwy prezentacyjnej. WPF wspiera grafikę wektorową, animacje oraz różne efekty wizualne, co czyni go idealnym narzędziem do budowy nowoczesnych, estetycznych aplikacji dla systemu Windows. Integracja z .NET i Visual Studio umożliwia szybkie tworzenie aplikacji oraz korzystanie z bogatych bibliotek i gotowych komponentów UI. WPF jest szczególnie ceniony za elastyczność, obsługę danych i możliwość tworzenia aplikacji responsywnych.

Pytanie 21

Jakiego typu testy są stosowane do sprawdzania funkcjonalności prototypu interfejsu?

A. Testy efektywnościowe
B. Testy interfejsu
C. Testy zgodności
D. Testy obciążeniowe
Testy wydajnościowe są przeznaczone do analizy szybkości działania aplikacji, mierzenia czasu odpowiedzi oraz identyfikowania potencjalnych wąskich gardeł w kodzie lub serwerze, ale nie dotyczą graficznego interfejsu. Testy zgodności skupiają się na weryfikacji, czy aplikacja spełnia normy prawne, techniczne i branżowe, jednak nie analizują działania interfejsu użytkownika. Testy obciążeniowe badają, jak aplikacja radzi sobie z dużą liczbą użytkowników lub intensywnym przetwarzaniem danych, co jest istotne dla wydajności, ale nie dla weryfikacji funkcji prototypu interfejsu.

Pytanie 22

Która z poniższych struktur danych jest najbardziej odpowiednia do przechowywania unikalnych elementów?

A. Tablica
B. Sekwencja
C. Kolejka priorytetowa
D. Zbiór (Set)
Lista pozwala na dodawanie powtarzających się elementów, więc nie daje ci unikalności. Tablica działa podobnie, bo też trzyma duplikaty, bez jakiegoś mechanizmu, który by je automatycznie usuwał. Kolejka priorytetowa przechowuje rzeczy według określonej kolejności, ale tu znowu nie jest mowa o unikalności. Każda z tych struktur ma swoje zadania, ale żadna nie jest tak dobra jak zbiór, jeśli chodzi o trzymanie unikalnych danych. Dziwne, nie?

Pytanie 23

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 > 9 && x < 100) && (x % 4 == 0)
B. (x > 9 && x < 100) || (x % 4 == 0)
C. (x > 0 && 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 24

Co to jest JWT (JSON Web Token)?

A. Format zapisu danych używany w bazach NoSQL
B. Standard definiujący sposób bezpiecznego przekazywania informacji jako obiekt JSON
C. Biblioteka JavaScript do walidacji formularzy webowych
D. Protokół komunikacyjny do transferu danych między klientem a serwerem
Chociaż różne podejścia do komunikacji i transferu danych są istotne, żadna z pozostałych odpowiedzi nie odnosi się bezpośrednio do istoty JWT. Protokół komunikacyjny do transferu danych między klientem a serwerem, choć może obejmować różne metody, nie wyraża istoty JWT. Standardy takie jak HTTP, WebSocket czy REST, które służą do przesyłania danych, nie definiują struktury ani zasad bezpieczeństwa związanych z JWT. Format zapisu danych używany w bazach NoSQL, jak MongoDB, nie ma związku z JWT, który jest specyficznie zaprojektowany do przesyłania informacji w formacie JSON, a nie do przechowywania ich w bazach danych. Bazy NoSQL mają swoje własne struktury danych i modele, które różnią się znacznie od modelu JSON Web Token. Podobnie, biblioteka JavaScript do walidacji formularzy webowych nie ma nic wspólnego z JWT, który jest narzędziem do zarządzania autoryzacją i sesjami użytkownika. Te błędne odpowiedzi mogą prowadzić do pomyłek w zrozumieniu, co oznacza JWT i do jakich celów jest przeznaczony. Kluczowym błędem myślowym jest mylenie różnych warstw architektury aplikacji, gdzie JWT jest konkretnym rozwiązaniem do zarządzania bezpieczeństwem, a nie ogólnym protokołem komunikacyjnym czy formatem danych.

Pytanie 25

Przeprowadzając analizę kodu interfejsu graficznego napisanego w języku XAML, można zauważyć, że:

Ilustracja do pytania
A. elementy: tekst, obraz, przycisk Like, przycisk Share, tekst są ułożone jeden pod drugim
B. tekst "Fotograf" znajduje się po prawej stronie obrazu
C. obraz znajduje się po lewej stronie, a pozostałe elementy po prawej
D. przyciski są ustawione poziomo obok siebie
Analizując przedstawione opcje, możemy zauważyć kilka nieporozumień dotyczących sposobu układania elementów w XAML przy użyciu StackLayout. Pierwsza niepoprawna koncepcja sugeruje, że napis "Fotograf" jest położony po prawej stronie obrazu, co nie jest zgodne z rzeczywistym układem. W przypadku orientacji pionowej, jaką posiada zewnętrzny StackLayout, elementy są układane jeden pod drugim, co oznacza, że "Fotograf" znajduje się nad obrazem, a nie po jego prawej stronie. Druga koncepcja twierdzi, że wszystkie elementy są ułożone jeden pod drugim, co częściowo jest prawdą dla zewnętrznego układu, ale ignoruje fakt, że wewnętrzny StackLayout zawiera przyciski ułożone poziomo. Trzecia opcja była poprawna, co już omówiono powyżej. Czwarta nieprawidłowa koncepcja sugeruje, że obraz znajduje się po lewej, a inne elementy po prawej stronie, co nie odpowiada specyfice układu pionowego w StackLayout. Błędne myślenie często wynika z niewłaściwego rozumienia hierarchii i interakcji między zagnieżdżonymi układami w XAML. Zrozumienie, jak działa orientacja w StackLayout, jest kluczem do uniknięcia takich błędów i efektywnego projektowania interfejsów użytkownika.

Pytanie 26

Który z protokołów w modelu TCP/IP odpowiada za pewne przesyłanie danych?

A. TCP
B. IP
C. HTTP
D. UDP
Protokół IP (Internet Protocol) działa na poziomie sieci i jest odpowiedzialny za adresowanie oraz routing pakietów w sieci, ale nie zapewnia niezawodności w przesyłaniu danych. IP może dostarczać pakiety w dowolnej kolejności, a także nie oferuje mechanizmów do ponownego przesyłania utraconych danych. Z tego powodu nie jest odpowiedni do zastosowań wymagających gwarancji dostarczenia. Z kolei UDP (User Datagram Protocol) jest protokołem transportowym, który również nie zapewnia niezawodności. UDP umożliwia szybkie przesyłanie danych bez ustanawiania połączenia, co czyni go idealnym dla aplikacji takich jak strumieniowanie audio i wideo, gdzie opóźnienia są mniej krytyczne niż utrata niektórych pakietów. Wreszcie, HTTP (Hypertext Transfer Protocol) jest protokołem aplikacyjnym, który działa na szczycie TCP, ale nie jest odpowiedzialny za przesyłanie danych w niezawodny sposób samodzielnie, ponieważ korzysta z TCP, aby zapewnić te funkcje. HTTP używa TCP do transportu danych, co oznacza, że niezawodność komunikacji nie jest bezpośrednio przypisana do HTTP, ale raczej do protokołu, na którym jest oparty.

Pytanie 27

Jakie ma znaczenie operator "==" w języku C++?

A. Zwiększenie wartości zmiennej o 1
B. Porównanie dwóch wartości
C. Negacja logiczna
D. Przypisanie wartości do zmiennej
Operator `=` to operator przypisania, który służy do przypisywania wartości do zmiennej (`a = 5`). Jest to jedna z najczęstszych przyczyn błędów logicznych, gdy zamiast `==` przypadkowo używa się `=`, co prowadzi do przypisania wartości zamiast porównania. Operator `!=` oznacza nierówność i zwraca `true`, gdy dwie wartości są różne, co jest przeciwieństwem `==`. Operator `!` to negacja logiczna – przekształca wartość logiczną na jej przeciwną, np. `!true` zwraca `false`. W żadnym z tych przypadków operatory te nie służą do porównywania równości w taki sposób, jak `==`.

Pytanie 28

Który z operatorów w języku C++ służy do pobierania adresu zmiennej?

A. *
B. >
C. delete
D. &
Hmmm, operator '*' rzeczywiście jest do dereferencji wskaźnika, ale nie myl go z innymi operatorami. '>' to operator do porównania, ale nie ma nic wspólnego z adresami czy wskaźnikami. A delete służy do zwalniania pamięci, a nie do uzyskiwania adresów zmiennych. Każdy z tych operatorów ma swoje miejsce w C++, ale jak się pomyli, to może być ciężko, no nie? Warto się przyjrzeć jeszcze raz tym pojęciom.

Pytanie 29

Co to jest BEM w kontekście CSS?

A. Browser Extension Module - moduł rozszerzeń przeglądarki
B. Backend Encryption Method - metoda szyfrowania danych w backendzie
C. Bootstrap Element Manager - narzędzie do zarządzania elementami Bootstrap
D. Metodologia nazewnictwa klas CSS: Block, Element, Modifier
Wybór innych odpowiedzi wskazuje na nieporozumienie dotyczące koncepcji BEM oraz jego zastosowania w CSS. Browser Extension Module, czyli moduł rozszerzeń przeglądarki, jest całkowicie niepowiązany z tematyką stylizacji stron internetowych. Takie podejście do ładowania lub tworzenia stylów w przeglądarkach nie dotyczy metodologii organizacji kodu CSS, jaką jest BEM. Backend Encryption Method natomiast odnosi się do bezpieczeństwa i szyfrowania danych w systemach serwerowych, co także nie ma związku z front-endowym podejściem do stylizacji. Pojęcie Bootstrap Element Manager mogłoby sugerować narzędzie do zarządzania komponentami w frameworku Bootstrap, jednak nie odnosi się do BEM, który jest niezależny od konkretnego frameworka i koncentruje się na organizacji kodu CSS. Typowym błędem myślowym przy wyborze tych odpowiedzi jest skupienie się na technologiach związanych z przeglądarką lub backendem, zamiast na metodologii stylistycznej, która ma na celu ułatwienie pracy z CSS. Kluczowe jest zrozumienie, że BEM jest narzędziem używanym do poprawy struktury i czytelności kodu CSS, co jest niezbędne w procesie tworzenia nowoczesnych, skalowalnych aplikacji webowych. Zwracanie uwagi na te różnice jest istotne dla każdej osoby zajmującej się front-endem, aby uniknąć zamieszania w terminologii i użyciu odpowiednich narzędzi do właściwych zadań.

Pytanie 30

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

A. in
B. ==
C. and
D. is
Operator `==` służy do porównywania dwóch wartości, ale nie sprawdza przynależności do listy czy zbioru. Operator `is` porównuje obiekty pod względem tożsamości (czy wskazują na ten sam obiekt w pamięci), co różni się od `in`, który porównuje wartości. Operator `and` to operator logiczny, który sprawdza, czy dwie wartości są prawdziwe (`True`), ale nie jest używany do wyszukiwania elementów w listach czy zbiorach. Każdy z tych operatorów pełni inną funkcję niż `in`, który jest dedykowany do sprawdzania przynależności elementów do kolekcji.

Pytanie 31

Jakie pola powinny być umieszczone w klasie nadrzędnej w strukturze dziedziczenia?

A. Pola, które są wspólne dla wszystkich klas pochodnych
B. Pola, które są tylko prywatne
C. Pola, które są charakterystyczne jedynie dla pojedynczej klasy pochodnej
D. Pola, które są wykorzystywane tylko w funkcjach statycznych
Pola specyficzne dla jednej klasy pochodnej nie powinny znajdować się w klasie bazowej, ponieważ zwiększałoby to złożoność i naruszało zasadę separacji odpowiedzialności. Prywatne pola są ukryte i nie są dziedziczone przez klasy pochodne – są dostępne wyłącznie w ramach klasy, w której zostały zdefiniowane. Pola używane wyłącznie w metodach statycznych nie muszą znajdować się w klasie bazowej, ponieważ są to elementy niezależne od instancji klasy i są przypisane do samej klasy, a nie jej obiektów.

Pytanie 32

Jakie jest podstawowe zadanie firewalla w systemie komputerowym?

A. Szyfrowanie danych przesyłanych w sieci
B. Zarządzanie ruchem sieciowym i blokowanie nieautoryzowanego dostępu
C. Ochrona danych na poziomie aplikacji internetowych
D. Zapobieganie wyciekom informacji na skutek awarii systemu
Firewall to narzędzie, które zarządza ruchem sieciowym i blokuje nieautoryzowane połączenia. Jego głównym celem jest ochrona przed nieuprawnionym dostępem do systemu poprzez analizę i filtrowanie pakietów danych. Firewall działa na poziomie sieciowym i aplikacyjnym, co pozwala na skuteczne zatrzymywanie prób włamań, ataków DDoS oraz złośliwego oprogramowania próbującego komunikować się z serwerami zewnętrznymi. To niezbędny element ochrony każdej infrastruktury IT.

Pytanie 33

Jaki będzie rezultat operacji logicznej AND dla wartości binarnych 1010 oraz 1100?

A. 1000
B. 1010
C. 1100
D. 1110
Wszystkie inne proponowane odpowiedzi są nieprawidłowe z różnych powodów. Odpowiedź 1110 jest niepoprawna, ponieważ wynikiem operacji AND nie może być 1 na pozycji bitu, gdzie przynajmniej jeden z porównywanych bitów wynosi 0. W tej operacji, gdy bierzemy pod uwagę drugi i trzeci bit, oba są odpowiednio 0 i 1, co daje wynik 0, a nie 1. Kolejna nieprawidłowość dotyczy odpowiedzi 1100. W tej odpowiedzi otrzymujemy 1 w pierwszym i drugim bicie, co jest sprzeczne z zasadą operacji AND, gdzie jeden z porównywanych bitów również musi być 0. W związku z tym, operacja AND dla tych bitów powinna również zwrócić 0 w tych pozycjach. Ostatnią niepoprawną odpowiedzią jest 1010. Choć ta liczba jest jedną z operowanych i rzeczywiście zawiera bity 1 i 0, wynik operacji AND nie powinien być równy któremuś z oryginalnych operandów, ale rezultatem zgodnym z zasadami logiki binarnej. To pokazuje, że niektóre odpowiedzi mogą zawierać bity, które są zgodne z jednym z operandów, jednak nie są wynikiem właściwej operacji AND. W kontekście systemów logicznych oraz algorytmów cyfrowych, zrozumienie tych zasad jest kluczowe dla prawidłowego manipulowania danymi i projektowania układów cyfrowych.

Pytanie 34

Co oznacza operator '===' w JavaScript?

A. Konkatenacja stringów
B. Przypisanie wartości
C. Porównanie wartości i typów
D. Porównanie wartości
Operator '===' w JavaScript jest używany do porównania wartości oraz ich typów. To znaczy, że aby dwa elementy uznano za równe, muszą mieć zarówno tę samą wartość, jak i ten sam typ. Przykładowo, porównanie liczby 5 i stringa '5' zwróci false, ponieważ różnią się typem. Używanie '===' jest zalecane w dobrych praktykach programistycznych, ponieważ eliminuje niejednoznaczności związane z równością luźną (operator '=='), która może prowadzić do nieprzewidywalnych wyników. Na przykład, '5' == 5 zwróci true, co może być mylące. Dlatego w sytuacjach, gdzie zależy nam na ścisłym porównaniu, powinno się zawsze stosować '===' dla jasności kodu i uniknięcia błędów. W kontekście profesjonalnego programowania, korzystanie z '===' zapewnia lepszą kontrolę typów danych, co jest kluczowe w większych projektach, gdzie błędy typów mogą prowadzić do poważnych problemów z debugowaniem i utrzymywaniem kodu.

Pytanie 35

Która z wymienionych reguł należy do netykiety?

A. Unikanie używania dużych liter w komunikacji
B. Stosowanie nieformalnego języka w każdej rozmowie
C. Zaniechanie odpowiadania na wiadomości od innych użytkowników
D. Udostępnianie treści bez zgody właścicieli
Unikanie pisania wielkimi literami w wiadomościach jest kluczowym elementem netykiety, ponieważ tekst pisany dużymi literami w internecie jest powszechnie interpretowany jako krzyk. To zasada, która ma na celu utrzymanie kultury komunikacji online oraz zapewnienie komfortu odbiorcy. Gdy użytkownik korzysta z wielkich liter, może to być odbierane jako agresywne lub dominujące, co może prowadzić do nieporozumień oraz negatywnych reakcji. Przykładem może być sytuacja, w której osoba, pisząc do grupy na forum internetowym, używa wyłącznie wielkich liter, co może zniechęcić innych do interakcji. Dobrą praktyką jest pisanie w sposób przystępny i zrozumiały, co sprzyja pozytywnej atmosferze w komunikacji. Standardy netykiety, takie jak te przedstawione w dokumentach związanych z etyką w internecie, podkreślają znaczenie szacunku i zrozumienia w interakcjach online, co obejmuje również sposób formułowania wiadomości. Warto także pamiętać o tym, że różne platformy społecznościowe mają swoje zasady, które podkreślają unikanie pisania krzykiem, co potwierdza ogólne podejście do netykiety.

Pytanie 36

Która z właściwości przycisków typu Radio-button opisanych w przedstawionym fragmencie dokumentacji jest poprawna?

Ilustracja do pytania
A. Etykieta (label) może być umieszczona wyłącznie po przycisku radio-button
B. Właściwość labelPosition może przyjmować jedną z dwóch opcji
C. Wartość właściwości value grupy radio przechowuje tekst etykiety dla każdego radio-button
D. Przyciski radio-button są organizowane w elemencie o nazwie
Radio-buttony są grupowane za pomocą 'fieldset' lub innych elementów, ale nie 'radio-group', co jest błędnym terminem. Właściwość 'value' odnosi się do wartości logicznej, a nie tekstu etykiety. Etykieta (label) może być umieszczona po obu stronach przycisku, a nie wyłącznie po jednej.

Pytanie 37

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

A. React
B. Angular
C. Django
D. Vue.js
Odpowiedzi takie jak Angular, Vue.js i React są frameworkami oraz bibliotekami JavaScript, które służą do budowy interfejsów użytkownika w aplikacjach webowych. Angular to kompleksowy framework stworzony przez Google, który wspiera architekturę typu MVC (Model-View-Controller) oraz promuje stosowanie komponentów, co ułatwia rozwój dużych aplikacji. Vue.js, z kolei, jest progresywnym frameworkiem, który pozwala na stopniowe wprowadzanie go w istniejących projektach, a jego elastyczność sprawia, że jest popularnym wyborem wśród frontendowców. React, stworzony przez Facebook, to biblioteka do budowy UI, koncentrująca się na tworzeniu interaktywnych komponentów. Każde z tych rozwiązań ma swoje unikalne cechy, a ich stosowanie jest szeroko akceptowane w branży jako najlepsze praktyki przy tworzeniu nowoczesnych aplikacji webowych. Pomylenie Django z tymi frameworkami może wynikać z nieznajomości roli jaką odgrywają różne języki programowania oraz frameworki w ekosystemie webowym. Zrozumienie różnic między technologiami backendowymi a frontendowymi jest kluczowe dla programistów, którzy chcą skutecznie przyczyniać się do pracy zespołów deweloperskich."]

Pytanie 38

Aby zdefiniować zmienną, która będzie działała jako licznik instancji danej klasy, należy wprowadzenie takiego zmiennej poprzedzić słowem kluczowym

A. register
B. static
C. virtual
D. operator
Słowo 'register' oznacza zmienną przechowywaną w rejestrze procesora, ale nie jest używane do deklarowania pól klasowych. 'Operator' odnosi się do przeciążania operatorów, co nie ma związku z liczeniem instancji klasy. 'Virtual' dotyczy metod wirtualnych i polimorfizmu, a nie liczenia obiektów klasy.

Pytanie 39

Jaką kategorię reprezentuje typ danych "array"?

A. Typ danych prosty
B. Typ logiczny
C. Typ danych złożony
D. Typ wskaźników
Prosty typ danych odnosi się do typów takich jak 'int', 'char' czy 'bool', które przechowują pojedyncze wartości, a nie zestawy danych. Typ wskaźnikowy przechowuje adresy pamięci, a nie kolekcje wartości, jak to ma miejsce w przypadku tablic. Typ logiczny (boolean) przechowuje wartości 'true' lub 'false', ale nie jest przeznaczony do przechowywania wielu elementów. Tablice różnią się od typów prostych tym, że pozwalają na jednoczesne przechowywanie wielu elementów i dostęp do nich za pomocą indeksów.

Pytanie 40

Do zadań widoku w architekturze MVVM (Model_View-Viewmodel) należy

A. przechowywanie ściągniętych i przetworzonych informacji
B. obsługa interakcji użytkownika, stworzenie UI
C. zarządzanie logiką aplikacji - obejmuje wdrażanie algorytmów
D. przekazywanie danych do widoku oraz wymiana informacji z modelem
Logika aplikacji – To zadanie modelu lub ViewModel. Udostępnianie danych – To rola ViewModel, a nie widoku. Przechowywanie danych – Jest związane z modelem, nie widokiem, który zajmuje się prezentacją danych użytkownikowi.