Wyniki egzaminu

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

Egzamin zdany!

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

Wymagane minimum: 20 punktów (50%)

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

Który z algorytmów ma złożoność O(n<sup>2</sup>)?

A. Bubble Sort
B. Merge Sort
C. Binary Search
D. Dijkstra
Bubble Sort to algorytm o złożoności O(n²), co oznacza, że jego czas wykonania rośnie kwadratowo wraz ze wzrostem liczby elementów wejściowych. Algorytm porównuje sąsiadujące elementy i zamienia je miejscami, jeśli są w złej kolejności. Proces ten powtarza się wielokrotnie, aż do uzyskania pełnego posortowania tablicy. Ze względu na swoją prostotę, Bubble Sort jest często wykorzystywany do nauki podstaw algorytmiki, ale w praktyce rzadko stosuje się go do sortowania dużych zbiorów danych, ponieważ jest nieefektywny w porównaniu do bardziej zaawansowanych algorytmów, takich jak QuickSort czy Merge Sort.

Pytanie 2

Jakie są główne różnice między środowiskiem RAD (Rapid Application Development) a klasycznymi IDE w odniesieniu do aplikacji mobilnych?

A. RAD działa tylko na urządzeniach z systemem iOS
B. RAD koncentruje się wyłącznie na procesie debugowania aplikacji
C. RAD pozwala na szybsze budowanie aplikacji dzięki narzędziom do wizualnego designu i automatycznego generowania kodu
D. RAD nie obsługuje interfejsu użytkownika
RAD (Rapid Application Development) umożliwia szybsze tworzenie aplikacji mobilnych dzięki narzędziom do wizualnego projektowania i automatycznego generowania kodu. RAD koncentruje się na iteracyjnym podejściu do rozwoju oprogramowania, w którym prototypy są budowane i testowane w krótkich cyklach, co pozwala na szybkie dostosowywanie aplikacji do zmieniających się wymagań użytkowników. W kontekście aplikacji mobilnych, RAD skraca czas tworzenia poprzez graficzne narzędzia do budowy interfejsów, gotowe komponenty oraz integrację z backendem. Frameworki RAD, takie jak OutSystems, Mendix czy Flutter, pozwalają na szybkie wdrażanie i modyfikację aplikacji mobilnych, co znacząco zwiększa efektywność programistów.

Pytanie 3

Jakie środowisko deweloperskie jest powszechnie wykorzystywane do produkcji aplikacji webowych w języku Java?

A. Eclipse
B. XCode
C. Android Studio
D. PyCharm
Eclipse to jedno z najpopularniejszych środowisk programistycznych (IDE) wykorzystywanych do tworzenia aplikacji webowych w języku Java. Jest to potężne narzędzie, które wspiera zarówno tworzenie aplikacji desktopowych, jak i rozbudowanych systemów backendowych. Eclipse oferuje wiele wtyczek i rozszerzeń umożliwiających integrację z narzędziami do zarządzania bazami danych, serwerami aplikacji oraz systemami kontroli wersji. Dzięki temu programiści mogą efektywnie budować i testować aplikacje webowe napisane w Javie.

Pytanie 4

W dwóch przypadkach opisano mechanizm znany jako Binding. Jego celem jest

Ilustracja do pytania
A. wiązanie oraz eksportowanie plików z różnych modułów aplikacji
B. przetwarzanie zdarzeń kontrolek interfejsu użytkownika przez wywoływanie odpowiednich funkcji
C. wiązać właściwości (property) elementu interfejsu użytkownika z danymi lub właściwością innego obiektu
D. zarządzanie mechanizmem obietnic (promises) lub obserwatora (observable) w programowaniu asynchronicznym
Binding (wiązanie danych) to mechanizm wiązania właściwości elementu interfejsu użytkownika z danymi lub właściwościami innego obiektu. Umożliwia to automatyczne aktualizowanie UI po zmianie danych. Jest to kluczowa funkcjonalność w nowoczesnych frameworkach front-end, takich jak Angular czy Vue, która pozwala na dynamiczne aktualizowanie widoków bez konieczności ręcznego manipulowania DOM.

Pytanie 5

Która grupa typów zawiera wyłącznie typy złożone?

A. char, struct, union
B. class, struct, union
C. unsigned, struct, float
D. class, struct, float
Class, struct i union to typy złożone, które mogą przechowywać wiele różnych wartości i struktur danych. Klasy i struktury są podstawą programowania obiektowego, a unie (union) pozwalają na efektywne zarządzanie pamięcią poprzez współdzielenie miejsca w pamięci dla różnych typów danych.

Pytanie 6

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. wyświetlanie w konsoli przeglądarki danych pobranych z pól formularza w czasie rzeczywistym, gdy użytkownik je wypełnia
C. funkcję, która wypełnia dane w formularzu podczas jego inicjalizacji
D. obsługę zdarzenia przesłania formularza
Oba fragmenty kodu, zarówno w Angularze jak i React.js, pokazują obsługę zdarzenia zatwierdzenia formularza. W Angularze zdarzenie submit jest obsługiwane poprzez przypisanie funkcji submit do atrybutu ngSubmit. Ta funkcja otrzymuje jako argument obiekt formularza, a następnie wypisuje jego wartość w konsoli za pomocą f.value. Jest to zgodne z dobrymi praktykami Angulara, gdzie korzysta się z dwukierunkowego wiązania danych i obiektu formularza do zarządzania danymi wejściowymi. W przypadku React.js funkcja handleSubmit jest przypisywana do zdarzenia onSubmit formularza. W tej funkcji nie tylko logujemy dane wejściowe, ale również używamy e.preventDefault(), aby zapobiec domyślnemu działaniu formularza, co jest standardową praktyką w React.js, gdzie zarządzamy stanem komponentów samodzielnie. W obu przypadkach kluczową czynnością jest reakcja na zdarzenie wysłania formularza, co pozwala na dalsze przetwarzanie danych wejściowych, walidację lub wysyłanie ich do serwera.

Pytanie 7

Jaki typ testów ocenia funkcjonalność aplikacji z punktu widzenia użytkownika końcowego?

A. Testy zgodności
B. Testy obciążeniowe
C. Testy funkcjonalne
D. Testy użyteczności
Testy użyteczności to kluczowy element w procesie tworzenia aplikacji, który koncentruje się na analizie i ocenie interakcji użytkownika z produktem. Celem testów użyteczności jest sprawdzenie, jak łatwa i intuicyjna w obsłudze jest aplikacja, czy użytkownik jest w stanie efektywnie osiągnąć swoje cele oraz jakie są potencjalne bariery w korzystaniu z aplikacji. Testy te dostarczają cennych informacji na temat UX (User Experience) i pozwalają na wczesne wykrycie problemów związanych z designem oraz funkcjonalnością.

Pytanie 8

W jednostce centralnej, za obliczenia na liczbach zmiennoprzecinkowych odpowiada

A. AU
B. IU
C. ALU
D. FPU
FPU, czyli jednostka zmiennoprzecinkowa, zajmuje się obliczeniami na liczbach, które mają część ułamkową. Dzięki niej komputer może szybko i dokładnie przeprowadzać różne skomplikowane operacje matematyczne, jak na przykład mnożenie czy pierwiastkowanie. Jest to naprawdę ważne w takich programach jak oprogramowanie inżynieryjne czy aplikacje graficzne, bo tam precyzja to podstawa, żeby wszystko działało jak należy.

Pytanie 9

Dziedziczenie jest używane, gdy zachodzi potrzeba

A. asynchronicznej realizacji długotrwałych zadań
B. określenia zasięgu dostępności metod i pól danej klasy
C. sformułowania klasy bardziej szczegółowej niż już stworzona
D. wykorzystania stałych wartości, niezmieniających się w trakcie działania aplikacji
Dziedziczenie to fajna sprawa, bo pozwala nam tworzyć nowe klasy na bazie tych, które już mamy. Dzięki temu możemy zaoszczędzić dużo czasu na pisaniu kodu i jednocześnie dodawać nowe funkcje do tych klas. To naprawdę kluczowy element programowania obiektowego.

Pytanie 10

Który z wymienionych elementów interfejsu użytkownika jest charakterystyczny dla aplikacji działającej na komputerze?

A. Strona HTML
B. Przycisk (Button)
C. Routing
D. API REST
Przycisk, czyli ten mały element, co go klikamy w aplikacjach, to naprawdę ważna część interfejsu. Używamy go, żeby coś zainicjować, na przykład zapisać dane czy wywołać jakąś funkcję. Fajnie, że można go dowolnie ustawiać – zmieniać wygląd, rozmiar, a nawet to, jak się zachowuje. Dzięki temu pasuje do każdej aplikacji. W dzisiejszych programach, jak WPF, te przyciski mogą mieć różne kolorowe ikony albo nawet animacje, co sprawia, że aplikacja wygląda super. Generalnie, bez przycisków użytkownik by się w aplikacji nie połapał, bo to dzięki nim możemy nawigować, zatwierdzać formularze czy otwierać nowe okna dialogowe.

Pytanie 11

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

A. 12
B. 8
C. 14
D. 10
Liczba binarna 1010 to wartość dziesiętna, która wynosi 10. Aby dokonać konwersji liczby binarnej na system dziesiętny, należy zrozumieć, że każda cyfra w systemie binarnym reprezentuje potęgę liczby 2, zaczynając od prawej strony, gdzie najniższa pozycja ma wartość 2^0. W przypadku 1010, mamy następujące pozycje: 1 * 2^3 (co daje 8), 0 * 2^2 (co daje 0), 1 * 2^1 (co daje 2) oraz 0 * 2^0 (co daje 0). Sumując te wartości: 8 + 0 + 2 + 0, otrzymujemy 10. W praktyce konwersja z systemu binarnego na dziesiętny jest niezwykle przydatna w programowaniu i elektronice, gdzie liczby binarne są powszechnie stosowane. Przykładowo, w obliczeniach komputerowych oraz w projektowaniu układów cyfrowych, znajomość tych konwersji jest kluczowa. Odnosi się to również do standardów, takich jak IEEE 754, które definiują reprezentację liczb zmiennoprzecinkowych w formatach binarnych.

Pytanie 12

Jakie środowisko jest przeznaczone do tworzenia aplikacji mobilnych dla urządzeń Apple, wykorzystujące różne języki programowania, takie jak Java i Objective C?

A. Android Studio
B. NetBeans
C. React Native
D. XCode
Xcode to środowisko dedykowane do tworzenia aplikacji mobilnych na urządzenia Apple. Obsługuje języki takie jak Swift i Objective-C, co czyni go narzędziem pierwszego wyboru dla programistów iOS.

Pytanie 13

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

Ilustracja do pytania
A. parzyste.
B. podzielne przez wartość zmiennej check.
C. pierwsze.
D. podzielne przez wartość zmiennej test.
Kod wypisuje liczby pierwsze, czyli takie, które mają dokładnie dwa dzielniki: 1 i samą siebie. Liczby pierwsze są podstawą w wielu dziedzinach matematyki i informatyki, szczególnie w kryptografii i algorytmach. Wyszukiwanie liczb pierwszych w danym przedziale to popularne zadanie, które pozwala na lepsze zrozumienie iteracji, pętli i warunków logicznych w programowaniu. Algorytm ten jest również wykorzystywany w optymalizacji algorytmów szyfrowania i generowania kluczy.

Pytanie 14

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

A. Przycisk
B. Dialog wyboru pliku
C. Pole tekstowe
D. Pasek narzędziowy
Pole tekstowe to element interfejsu użytkownika, który pozwala użytkownikowi na wprowadzanie danych tekstowych. Jest to jeden z najczęściej używanych komponentów UI w aplikacjach desktopowych, mobilnych i webowych. Pole tekstowe umożliwia wprowadzanie haseł, adresów e-mail, wiadomości i innych danych. W nowoczesnych aplikacjach często zawiera walidację, która sprawdza poprawność wpisywanych danych w czasie rzeczywistym. Dzięki swojej elastyczności, pola tekstowe mogą być wykorzystywane w różnorodnych formularzach, ankietach i systemach rejestracji użytkowników, co czyni je nieodzownym elementem aplikacji o dowolnym przeznaczeniu.

Pytanie 15

Jakie działania można podjąć, aby uniknąć pogorszenia wzroku podczas korzystania z komputera?

A. Stosować ergonomiczne podkładki pod ręce
B. Korzytać ze słuchawek tłumiących dźwięki
C. Używać filtrów przeciwodblaskowych na ekranie
D. Zachować stałą temperaturę w biurze
Stosowanie filtrów przeciwodblaskowych na monitorze to skuteczny sposób na zapobieganie pogorszeniu wzroku podczas pracy przy komputerze. Filtry te redukują odbicia światła, zmniejszając zmęczenie oczu i poprawiając komfort pracy. Długotrwała praca przy komputerze bez odpowiedniej ochrony może prowadzić do zespołu suchego oka, bólu głowy i problemów z widzeniem. Filtry przeciwodblaskowe to prosty, ale bardzo efektywny sposób na poprawę ergonomii stanowiska pracy. W połączeniu z odpowiednim ustawieniem monitora, regularnymi przerwami oraz ćwiczeniami wzrokowymi, pomagają one w utrzymaniu zdrowia oczu.

Pytanie 16

Na podstawie treści zawartej w ramce, określ, który z rysunków ilustruje element odpowiadający klasie Badge zdefiniowanej w bibliotece Bootstrap?

Ilustracja do pytania
A. Rysunek 4
B. Rysunek 3
C. Rysunek 1
D. Rysunek 2
Wybór Rysunku 2 jest poprawny ponieważ przedstawia on elementy badge zdefiniowane w bibliotece Bootstrap Badge to niewielkie oznaczenia wizualne zazwyczaj zawierające liczby lub krótkie informacje które można umieścić obok linków lub innych elementów interfejsu użytkownika W Bootstrapie badge są implementowane za pomocą klasy .badge i można je stosować na przykład do wskazywania liczby nowych wiadomości lub powiadomień w aplikacjach webowych Dzięki temu użytkownik ma natychmiastowy dostęp do ważnych informacji bez konieczności wykonywania dodatkowych działań Przykładem zastosowania badge może być ikonka koperty z liczbą nieprzeczytanych wiadomości w skrzynce odbiorczej Co więcej badge można stylować za pomocą dodatkowych klas kolorystycznych takich jak .bg-primary .bg-success itd co pozwala na dostosowanie ich wyglądu do stylistyki całej aplikacji To praktyczne narzędzie w tworzeniu intuicyjnych interfejsów użytkownika które poprawia użyteczność i estetykę strony internetowej Zastosowanie badge zgodnie z dobrymi praktykami projektowania UX/UI wspiera lepszą organizację i dostępność informacji w aplikacjach internetowych

Pytanie 17

Wskaż termin, który w języku angielskim odnosi się do "testów wydajnościowych"?

A. performance testing
B. integration testing
C. security testing
D. unit testing
Testy wydajnościowe, czyli performance testing, to coś, co naprawdę warto mieć na uwadze. Dzięki nim możemy sprawdzić, jak nasza aplikacja działa pod dużym obciążeniem i jak szybko odpowiada na różne żądania. Moim zdaniem, to kluczowy aspekt, zwłaszcza jeśli planujemy, żeby nasza aplikacja miała wielu użytkowników. W końcu, nikt nie lubi czekać, aż coś się załaduje!

Pytanie 18

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 } catch { obsługa }
C. try { kod } handle { 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 19

W klasie pracownik zdefiniowano opisane metody. Która z nich jest odpowiednia do dodania elementu diagnostycznego o treści: cout << "Obiekt został usunięty";

Ilustracja do pytania
A. wypisz
B. ~pracownik
C. operator==
D. pracownik
Destruktor to specjalna metoda w języku C++ oznaczona tyldą przed nazwą klasy która jest wywoływana automatycznie w momencie usuwania obiektu danego typu z pamięci. Dlatego dodanie elementu diagnostycznego cout<<Obiekt został usunięty; jest najbardziej sensowne w destruktorze ponieważ pozwala na śledzenie momentu w którym obiekt przestaje istnieć. Takie podejście jest zgodne z dobrymi praktykami programistycznymi ponieważ pomaga w debugowaniu i zarządzaniu zasobami w programie. Warto zauważyć że destruktory są kluczowe w kontekście zarządzania pamięcią szczególnie gdy klasa dynamicznie alokuje zasoby. Wówczas destruktor powinien zawierać kod zwalniający te zasoby aby uniknąć wycieków pamięci. Dodawanie diagnostycznych komunikatów może pomóc programistom w identyfikacji potencjalnych błędów związanych z zarządzaniem cyklem życia obiektów i poprawić ogólną stabilność i czytelność kodu. Praktyka ta jest szczególnie ważna w dużych projektach gdzie ręczne śledzenie wszystkich obiektów byłoby trudne i czasochłonne. Warto stosować taką diagnostykę w połączeniu z nowoczesnymi narzędziami do profilowania i analizy pamięci co zwiększa efektywność procesu programistycznego.

Pytanie 20

Która funkcja z biblioteki jQuery w JavaScript służy do naprzemiennego dodawania oraz usuwania klasy z elementu?

A. .changeClass()
B. .toggleClass()
C. .bingClass()
D. .switchClass()
Metoda .toggleClass() w jQuery jest mega przydatna, bo pozwala na dodawanie lub usuwanie klasy CSS w czasie rzeczywistym. Dzięki temu można fajnie urozmaicić interakcje na stronie i dodać różne efekty wizualne, co na pewno przyciąga uwagę użytkowników.

Pytanie 21

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. obraz znajduje się po lewej stronie, a pozostałe elementy po prawej
C. tekst "Fotograf" znajduje się po prawej stronie obrazu
D. przyciski są ustawione poziomo obok siebie
W analizowanym kodzie XAML widzimy, że element <StackLayout> z atrybutem Orientation="Horizontal" zawiera przyciski <Button> z tekstami "Like" i "Share". W XAML, stosując stack layout z orientacją poziomą, elementy w nim zawarte są umieszczane obok siebie w rzędzie. To sprawia, że przyciski "Like" i "Share" są widoczne na interfejsie użytkownika ułożone poziomo, zgodnie z tym, co jest opisane w poprawnej odpowiedzi. Użycie StackLayout z orientacją poziomą to często spotykana praktyka w projektowaniu interfejsów, gdy chcemy zorganizować elementy w rzędzie, na przykład przyciski na pasku narzędzi. Zrozumienie tego mechanizmu jest istotne, ponieważ pozwala na efektywne zarządzanie przestrzenią w aplikacjach mobilnych i webowych, gdzie dostępne miejsce może być ograniczone. Praktyczne zastosowanie takiego układu można zobaczyć na przykład w projektowaniu formularzy, gdzie grupujemy elementy w logiczny sposób, ułatwiając użytkownikowi interakcję z aplikacją. Dobre praktyki w projektowaniu interfejsów użytkownika zalecają, aby układ elementów był intuicyjny i zgodny z oczekiwaniami użytkowników, co StackLayout z orientacją poziomą doskonale realizuje w wielu przypadkach.

Pytanie 22

Który framework jest powszechnie wykorzystywany do tworzenia aplikacji internetowych w języku Python?

A. Angular
B. Django
C. ASP.NET Core
D. React.js
Django to framework stworzony specjalnie do budowy aplikacji webowych w języku Python. Jest jednym z najbardziej popularnych i zaawansowanych frameworków typu full-stack, który oferuje szeroki wachlarz narzędzi umożliwiających szybkie i efektywne tworzenie aplikacji internetowych. Django pozwala na tworzenie aplikacji zgodnych z zasadą DRY (Don't Repeat Yourself), co oznacza minimalizację powtarzalnego kodu. Posiada wbudowany panel administracyjny, system ORM (Object-Relational Mapping) oraz zabezpieczenia przed atakami CSRF i XSS. Dzięki Django programiści mogą skupić się na rozwijaniu logiki biznesowej, a nie na konfiguracji podstawowych funkcji aplikacji, co znacznie skraca czas wdrożenia gotowego produktu.

Pytanie 23

Celem zastosowania wzorca Obserwator w tworzeniu aplikacji WEB jest:

A. zarządzanie funkcjami synchronicznymi w kodzie aplikacji
B. informowanie obiektów o modyfikacji stanu innych obiektów
C. monitorowanie działań użytkownika oraz generowanie wyjątków
D. dostosowanie interfejsu użytkownika do różnych kategorii użytkowników
Wzorzec projektowy 'Obserwator' (Observer) umożliwia powiadamianie obiektów o zmianie stanu innego obiektu, co pozwala na luźne powiązanie między komponentami aplikacji. Jest szeroko stosowany w programowaniu aplikacji webowych i desktopowych, gdzie zmiany w jednym elemencie interfejsu użytkownika mogą automatycznie aktualizować inne części systemu. Dzięki temu wzorzec ten wspiera reużywalność kodu i ułatwia zarządzanie złożonymi systemami.

Pytanie 24

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

A. Zachowuje wspólną wartość dla wszystkich instancji tej klasy
B. Automatycznie likwiduje obiekty klasy po zakończeniu działania programu
C. Ogranicza dostęp do metod publicznych w klasie
D. Pozwala na dynamiczne dodawanie nowych metod
Składnik statyczny klasy przechowuje wartości współdzielone przez wszystkie obiekty tej klasy. Jest to jedno z najbardziej efektywnych narzędzi w programowaniu obiektowym, pozwalające na ograniczenie zużycia pamięci oraz zapewnienie spójności danych. Główna rola składnika statycznego polega na utrzymaniu jednej kopii zmiennej lub metody, która jest dostępna niezależnie od liczby instancji klasy. To oznacza, że zmiana wartości składowej statycznej jest natychmiast widoczna dla wszystkich obiektów klasy. Przykładem jest licznik instancji klasy lub konfiguracja globalna aplikacji, gdzie statyczność pozwala na scentralizowanie danych i ich jednolite zarządzanie.

Pytanie 25

Który z wymienionych wzorców projektowych jest najbardziej odpowiedni do uproszczenia interfejsu złożonego systemu?

A. Kompozyt (Composite)
B. Singleton (Singleton)
C. Metoda szablonowa (Template method)
D. Fasada (Facade)
Wzorzec projektowy Fasada (Facade) upraszcza interfejs do złożonego systemu poprzez dostarczenie jednolitego punktu dostępu do wielu podsystemów. Dzięki temu klienci mogą korzystać z funkcji systemu za pomocą prostego interfejsu, co zwiększa czytelność kodu i ułatwia jego utrzymanie. Fasada jest szczególnie przydatna w dużych aplikacjach, gdzie wiele modułów wymaga skomplikowanej konfiguracji lub współdziałania. Wprowadzenie fasady ukrywa złożoność wewnętrzną systemu, jednocześnie zapewniając dostęp do niezbędnych funkcjonalności. To rozwiązanie jest często stosowane w systemach z wieloma interfejsami API, w architekturze mikroserwisów oraz przy integracji zewnętrznych bibliotek.

Pytanie 26

W podanym fragmencie kodu Java wskaż, która zmienna może pomieścić wartość "T"

Ilustracja do pytania
A. zm2
B. zm1
C. zm3
D. zm4
Zmienna o nazwie zm3 została zadeklarowana jako typu char co oznacza że może przechowywać pojedynczy znak w tym przypadku wartość T. Typ char w języku Java jest używany do przechowywania znaków Unicode co czyni go idealnym do obsługi liter jako danych. Każdy znak jest przechowywany jako 16-bitowa wartość liczby całkowitej co umożliwia reprezentację szerokiego zakresu symboli w tym litery cyfry i inne znaki specjalne. Przykładowymi zastosowaniami typu char są przypadki gdzie konieczne jest przechowywanie i przetwarzanie liter np. w sytuacjach gdy aplikacja wymaga manipulacji pojedyńczymi znakami w tekście czy analizą ich wartości w kontekście porównywania danych. Dobre praktyki przy pracy z typem char obejmują świadome zarządzanie pamięcią i unikanie niepotrzebnych konwersji do innych typów danych co może prowadzić do strat precyzji lub nieoczekiwanych rezultatów. Ważne jest także zrozumienie jak znaki są kodowane i dekodowane szczególnie w kontekście międzynarodowym gdzie prawidłowa obsługa znaków Unicode jest kluczowa dla zapewnienia kompatybilności i poprawnego działania aplikacji w różnych językach.

Pytanie 27

Jakie są różnice między testami funkcjonalnymi a niefunkcjonalnymi?

A. Testy funkcjonalne oceniają zgodność działania aplikacji z założeniami, a niefunkcjonalne analizują aspekty wydajności, bezpieczeństwa i użyteczności
B. Testy funkcjonalne koncentrują się na interfejsie, a niefunkcjonalne na backendzie aplikacji
C. Testy funkcjonalne są realizowane tylko przez końcowych użytkowników, natomiast niefunkcjonalne przez programistów
D. Testy funkcjonalne oceniają wydajność aplikacji, podczas gdy niefunkcjonalne weryfikują poprawność kodu
Testy funkcjonalne sprawdzają, czy aplikacja działa zgodnie z założeniami i spełnia określone wymagania użytkownika. Obejmują one testowanie interfejsu, przepływu pracy oraz funkcji kluczowych dla działania oprogramowania. Testy niefunkcjonalne koncentrują się na aspektach takich jak wydajność, skalowalność, bezpieczeństwo i użyteczność. Różnica polega na tym, że testy funkcjonalne oceniają 'co' robi aplikacja, podczas gdy testy niefunkcjonalne oceniają 'jak dobrze' aplikacja działa w różnych warunkach. Testy niefunkcjonalne obejmują testy obciążeniowe (load testing), testy penetracyjne oraz analizy UX. Oba typy testów są niezbędne dla zapewnienia wysokiej jakości oprogramowania i jego niezawodności w środowisku produkcyjnym.

Pytanie 28

Który z przedstawionych poniżej przykładów ilustruje prawidłową deklarację zmiennej typu całkowitego w języku C++?

A. int liczba;
B. float liczba;
C. bool liczba;
D. char liczba;
W języku C++ zmienna typu całkowitego jest deklarowana za pomocą słowa kluczowego `int`. Przykładowa poprawna deklaracja to `int liczba;`, co oznacza, że `liczba` jest zmienną, która może przechowywać wartości całkowite, takie jak 1, 42 lub -15. Deklarowanie zmiennych w C++ pozwala na statyczne typowanie, co oznacza, że każda zmienna ma określony typ i nie może przechowywać wartości innego typu. Dzięki temu kod jest bardziej przejrzysty i mniej podatny na błędy związane z niezgodnością typów.

Pytanie 29

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

A. Bugzilla
B. Jasmine
C. Jira
D. Git
Jira to zaawansowane oprogramowanie do zarządzania projektami oraz śledzenia błędów, stworzone przez firmę Atlassian. Jest powszechnie stosowane w zespołach zajmujących się rozwijaniem oprogramowania, ale również znajduje zastosowanie w różnych dziedzinach, takich jak zarządzanie projektami, wsparcie techniczne oraz śledzenie zadań. Jira oferuje bogaty zestaw funkcji, które umożliwiają planowanie sprintów, monitorowanie postępów prac, zarządzanie backlogiem oraz raportowanie wydajności zespołu. Użytkownicy mogą tworzyć niestandardowe workflow, co pozwala dostosować procesy pracy do specyficznych potrzeb organizacji. Dzięki integracji z innymi narzędziami Atlassian, takimi jak Confluence czy Bitbucket, Jira jest elementem ekosystemu, który wspiera współpracę w zespołach. Przykładem zastosowania Jira może być zarządzanie cyklem życia produktu, gdzie zespół deweloperski wykorzystuje to narzędzie do śledzenia błędów, zarządzania wymaganiami oraz planowania wydań. Korzystanie z Jira wspiera podejście Agile, co jest zgodne z nowoczesnymi standardami zarządzania projektami.

Pytanie 30

W języku Java wyjątek ArrayIndexOutOfBoundsException występuje, gdy następuje próba dostępu do elementu tablicy, którego

A. indeks jest równy lub większy od rozmiaru tablicy
B. wartość przewyższa jego indeks
C. wartość przekracza rozmiar tablicy
D. indeks mieści się w zakresie od 0 do n-1, gdzie n oznacza rozmiar tablicy
ArrayIndexOutOfBoundsException występuje, gdy program odwołuje się do indeksu większego lub równego rozmiarowi tablicy. W języku Java indeksy zaczynają się od 0, więc próba dostępu do elementu spoza zakresu wywołuje ten wyjątek.

Pytanie 31

Wskaż język programowania, który pozwala na stworzenie aplikacji mobilnej w środowisku Android Studio?

A. Objective-C
B. Java
C. C++
D. Swift
Java to jeden z podstawowych języków programowania używanych do tworzenia aplikacji mobilnych na platformę Android. Jest to język, który został stworzony przez firmę Sun Microsystems, a jego pierwsza wersja została wydana w 1995 roku. Java charakteryzuje się silnym typowaniem, obiektowością oraz wsparciem dla programowania wielowątkowego, co czyni go idealnym do tworzenia wydajnych aplikacji mobilnych. Android Studio, oficjalne zintegrowane środowisko programistyczne (IDE) dla Androida, oferuje pełne wsparcie dla Javy, w tym możliwość korzystania z bibliotek Android SDK. Dzięki temu programiści mogą łatwo tworzyć interfejsy użytkownika, zarządzać zasobami oraz implementować logikę aplikacji. Przykładowo, pisząc aplikację do zarządzania zadaniami, programista może użyć Javy do stworzenia klas modelujących zadania oraz do obsługi interfejsu graficznego z wykorzystaniem XML i Java. Ponadto, Java jest zgodna z zasadami programowania obiektowego, co pozwala na łatwe zarządzanie kodem i jego ponowne wykorzystanie. Warto również zaznaczyć, że Java jest wspierana przez dużą społeczność, co zapewnia bogaty ekosystem bibliotek oraz narzędzi, ułatwiających rozwój aplikacji na Androida.

Pytanie 32

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

A. 50 Mbps
B. 400 Mbps
C. 40 Mbps
D. 500 Mbps
Przepustowość sieci to tak naprawdę miara, jak dobrze potrafimy przesyłać dane w określonym czasie, najczęściej podawana w bitach na sekundę (bps). Jeśli mamy 500 MB danych do przesłania w ciągu 10 sekund, to najpierw musimy zamienić megabajty na megabity. Pamiętaj, że 1 bajt to 8 bitów, więc 500 MB to 4000 Mb (500 MB * 8 = 4000 Mb). Jak już to zrobimy, dzielimy 4000 Mb przez 10 sekund i wychodzi nam 400 Mb/s. Ale warto też wspomnieć, że generalnie przepustowość mierzona jest w megabitach na sekundę. Tak więc 500 Mbps to w zasadzie to samo co 500 Mb/s w kontekście przesyłania danych. Podsumowując, obliczając 4000 Mb dzielone przez 10 sekund, dostajemy przepustowość 400 Mbps. Wiesz, to pokazuje, że przy takim transferze danych potrzeba sporego pasma, żeby wszystko działało jak należy. W dzisiejszych czasach, szybkość transferu danych to kluczowy element, żeby sieć była wydajna.

Pytanie 33

Do implementacji w aplikacji jednokierunkowej funkcji skrótu, zwanej funkcją haszującą, można wykorzystać algorytm

A. RSA
B. AES
C. MD5
D. DES
MD5 to popularny algorytm haszujący, który generuje skróty (hash) dla danych wejściowych. Jest stosowany w kryptografii do tworzenia sum kontrolnych i weryfikacji integralności danych, choć obecnie jest uważany za podatny na kolizje.

Pytanie 34

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

A. Sortowanie bąbelkowe
B. Sortowanie szybkie
C. Wyświetlenie elementów
D. Wyszukiwanie metodą binarną
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 35

Który z frameworków bazuje na budowaniu komponentów przy użyciu języka JavaScript?

A. React.js
B. Django
C. Node.js
D. ASP.NET Core
React.js to popularna biblioteka JavaScript, która opiera się na komponencie jako podstawowym elemencie budowy interfejsu użytkownika. Framework ten umożliwia tworzenie dynamicznych i interaktywnych aplikacji webowych, które cechują się wysoką wydajnością. Dzięki wykorzystaniu komponentów, programiści mogą wielokrotnie wykorzystywać te same elementy interfejsu, co znacznie upraszcza zarządzanie kodem i poprawia jego czytelność. React jest szeroko stosowany w budowie Single Page Applications (SPA) i wspiera technologię Virtual DOM, co minimalizuje liczbę operacji na rzeczywistym DOM i zwiększa szybkość renderowania stron. React jest szczególnie polecany do tworzenia nowoczesnych aplikacji webowych o dynamicznych interfejsach, co czyni go jednym z liderów na rynku frontendowym.

Pytanie 36

W sekcji, która odpowiada za obsługę wyjątku wygenerowanego przez aplikację, należy to zdefiniować

A. throw
B. catch
C. try
D. finally
Sekcja 'catch' w programowaniu obsługuje wyjątki, które mogą zostać wygenerowane podczas wykonywania programu. Pozwala to na przechwycenie błędów i odpowiednie zareagowanie, co zapobiega nieoczekiwanym awariom. Mechanizm try-catch jest fundamentalny dla zapewnienia stabilności aplikacji i minimalizacji błędów krytycznych.

Pytanie 37

Z analizy złożoności obliczeniowej algorytmów sortowania dla dużych zbiorów danych (powyżej 100 elementów) wynika, że najefektywniejszą metodą jest algorytm sortowania:

Ilustracja do pytania
A. kubełkowego
B. przez scalanie
C. bąbelkowego
D. przez zliczanie
Sortowanie przez zliczanie (Counting Sort) to jeden z najszybszych algorytmów sortowania dla dużych zbiorów danych, jeśli zakres wartości jest ograniczony. Algorytm działa w czasie O(n+k), gdzie n to liczba elementów, a k to zakres wartości. Jest to algorytm stabilny, co oznacza, że zachowuje kolejność elementów o tej samej wartości. Counting Sort jest szczególnie efektywny w przypadku danych numerycznych o ograniczonym przedziale wartości, co czyni go idealnym rozwiązaniem do sortowania dużych zbiorów danych w krótkim czasie.

Pytanie 38

Jaki typ pamięci RAM powinno się wybrać do efektywnego komputera do gier?

A. DDR4
B. LPDDR4
C. DDR5
D. DDR3
Wybór odpowiedniego rodzaju pamięci RAM jest kluczowy dla osiągnięcia maksymalnej wydajności w komputerze gamingowym. DDR5, najnowszy standard pamięci dynamicznej RAM, oferuje znaczące ulepszenia w porównaniu do swoich poprzedników. Główne różnice dotyczą prędkości, efektywności energetycznej oraz pojemności. DDR5 może oferować prędkości sięgające 8400 MT/s, co przyczynia się do szybszego transferu danych, co ma bezpośredni wpływ na wydajność gier i aplikacji wymagających wysokiej przepustowości. Ponadto, DDR5 wprowadza architekturę, która pozwala na zwiększenie ilości pamięci w jednym module, co umożliwia konfiguracje do 128 GB na pojedynczy moduł, co jest niezwykle korzystne dla graczy korzystających z bardziej wymagających tytułów. Przykłady gier, które potrafią w pełni wykorzystać możliwości DDR5 to Cyberpunk 2077 czy Call of Duty: Warzone, gdzie wydajność pamięci jest kluczowym elementem w uzyskiwaniu płynności rozgrywki. Stosowanie DDR5 nie tylko poprawia wydajność, ale również zwiększa przyszłościowość sprzętu, co sprawia, że jest to najlepszy wybór na dzisiejszym rynku komputerów gamingowych.

Pytanie 39

Jakie narzędzie jest wykorzystywane do zgłaszania błędów w projektach IT?

A. Photoshop
B. Blender
C. Git
D. JIRA
JIRA to jedno z najczęściej wykorzystywanych narzędzi do zarządzania projektami i raportowania błędów w projektach informatycznych. JIRA umożliwia śledzenie błędów, zarządzanie zadaniami oraz efektywne monitorowanie postępów prac nad projektem. Dzięki integracji z innymi narzędziami, takimi jak Confluence czy Bitbucket, JIRA stanowi kompleksowe rozwiązanie wspierające zespoły deweloperskie. Raportowanie błędów w JIRA pozwala na łatwe przypisywanie ich do odpowiednich członków zespołu, dodawanie załączników i komentarzy oraz monitorowanie statusu danego problemu, co usprawnia proces zarządzania jakością oprogramowania.

Pytanie 40

Jakie wartości może przyjąć zmienna typu boolean?

A. 1, -1
B. true, false
C. O oraz każdą liczbę całkowitą
D. trzy dowolne liczby naturalne
Zmienna typu logicznego (boolowskiego) w językach programowania, takich jak C++, Java czy Python, może przyjmować tylko dwie wartości: true (prawda) oraz false (fałsz). Te wartości są fundamentalne w logice komputerowej, ponieważ umożliwiają podejmowanie decyzji oraz kontrolowanie przepływu programu poprzez struktury warunkowe, takie jak instrukcje if, while czy for. Na przykład, w języku Python, tworząc zmienną logiczną, możemy użyć operatorów porównania, aby określić, czy dwie wartości są równe: is_equal = (5 == 5), co ustawia is_equal na true. Zmienne logiczne są zdefiniowane w standardach programowania, takich jak IEEE 754 dla reprezentacji liczb zmiennoprzecinkowych, gdzie wartość logiczna jest kluczowa dla operacji porównawczych. Dobrze zrozumiana logika boolowska jest niezbędna dla programistów, ponieważ stanowi podstawę algorytmu decyzyjnego oraz wpływa na efektywność kodu.