Wyniki egzaminu

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

Egzamin zdany!

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

Wymagane minimum: 20 punktów (50%)

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

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

A. Wybór odpowiednich struktur danych
B. Realizacja algorytmu sortującego
C. Zmiana języka programowania na bardziej wydajny
D. Weryfikacja zbiorów danych przed ich zastosowaniem
Wybór właściwych struktur danych to mega ważny krok, kiedy projektujesz swoje zestawy danych. To, jaką strukturę wybierzesz, ma ogromny wpływ na to, jak szybko i efektywnie będą działać algorytmy. Każda struktura ma swoje plusy i minusy – na przykład listy pozwalają na elastyczne zarządzanie elementami, stosy i kolejki trzymają dane w określonej kolejności, a drzewa czy grafy są już do bardziej skomplikowanych problemów. Dobrze dobrane struktury mogą znacznie przyspieszyć działanie programu i zmniejszyć zużycie zasobów. Moim zdaniem, jeśli chcesz projektować efektywne algorytmy, musisz naprawdę dobrze rozumieć, jak różne struktury działają i umieć je dopasować do problemu, który chcesz rozwiązać.

Pytanie 2

Po uruchomieniu podanego kodu w języku C++ w konsoli pojawi się ciąg liczb

Ilustracja do pytania
A. 2 3 4 5 6
B. 1 2 3 4 5
C. 1 2 3 4 5 6
D. 2 3 4 5 6 7
Kod w C++ wyświetla ciąg liczb '2 3 4 5 6', co wynika z iteracyjnego zwiększania wartości początkowej w pętli. Algorytm startuje od wartości 2 i zatrzymuje się przed osiągnięciem 7, co skutkuje wyświetleniem kolejnych liczb.

Pytanie 3

Który z poniższych nie jest typem danych w języku JavaScript?

A. Boolean
B. Integer
C. String
D. Object
W języku JavaScript typ danych Integer nie istnieje jako osobny typ. JavaScript używa jednego, uniwersalnego typu numerycznego, który reprezentuje zarówno liczby całkowite, jak i zmiennoprzecinkowe. Wszystkie liczby w JavaScript, niezależnie od tego, czy są to całkowite wartości, czy wartości dziesiętne, są przechowywane jako liczby typu Number. Dla programistów oznacza to, że operacje matematyczne na różnych typach liczb są prostsze, ponieważ nie muszą martwić się o konwersje między typami. Na przykład, jeśli zdefiniujesz zmienną `let x = 5;` i `let y = 10.5;`, możesz bez przeszkód wykonywać operacje takie jak `let suma = x + y;`, która poprawnie zwróci `15.5`. Warto zauważyć, że JavaScript nie obsługuje typów liczbowych takich jak Integer czy Float bezpośrednio, co może być interesującym zagadnieniem, na które warto zwrócić uwagę przy projektowaniu aplikacji. Dzięki temu, JavaScript jest bardziej elastyczny w kontekście różnych operacji matematycznych, stosując zasady IEEE 754 dla liczb zmiennoprzecinkowych.

Pytanie 4

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

Ilustracja do pytania
A. obsługę zdarzenia przesłania 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. funkcję, która zapisuje do zmiennych f lub e dane z polaformularza
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 5

Co to jest SQL injection?

A. Proces automatyzacji tworzenia zapytań SQL
B. Metoda optymalizacji zapytań SQL w bazach danych
C. Narzędzie do importowania danych do bazy SQL
D. Technika ataku polegająca na wstrzyknięciu złośliwego kodu SQL do zapytania
Błędne odpowiedzi dotyczą metod, które nie mają związku z problematyką bezpieczeństwa baz danych, a szczególnie atakami typu SQL injection. Metody optymalizacji zapytań SQL, choć istotne w kontekście wydajności, nie odnoszą się do kwestii zabezpieczeń. Optymalizacja polega na dostosowywaniu zapytań, aby mogły szybciej przetwarzać dane, co jest zupełnie innym zagadnieniem. Również narzędzie do importowania danych do bazy SQL nie jest w żaden sposób związane z typowymi atakami, a jego celem jest tylko ułatwienie pracy z danymi. Proces automatyzacji tworzenia zapytań SQL, choć pomocny w codziennych operacjach, również nie ma nic wspólnego z wstrzykiwaniem złośliwego kodu. Takie myślenie może prowadzić do niedocenienia zagrożeń związanych z bezpieczeństwem aplikacji i baz danych, co w praktyce może skutkować poważnymi naruszeniami bezpieczeństwa oraz utratą danych. Zrozumienie różnicy pomiędzy tymi koncepcjami jest kluczowe dla właściwego podejścia do zabezpieczeń aplikacji i ochrony przed atakami, co w dłuższej perspektywie pozwala na minimalizację ryzyka oraz zapewnienie integralności danych.

Pytanie 6

Którą konwencję nazewnictwa najczęściej stosuje się w JavaScript?

A. camelCase
B. snake_case
C. kebab-case
D. PascalCase
CamelCase to konwencja nazewnictwa, która jest powszechnie stosowana w JavaScript, szczególnie w kontekście definiowania zmiennych i funkcji. W tej metodzie, każde nowe słowo zaczyna się dużą literą, co czyni tekst bardziej czytelnym. Przykładami mogą być zmienne takie jak `userName` czy `getUserInfo`, gdzie pierwsza część jest zapisana małymi literami, a każde kolejne słowo zaczyna się od dużej litery. Stosowanie camelCase jest zgodne z przyjętymi standardami i dobrymi praktykami w Javascript, gdzie wskazano, że zmienne i funkcje powinny być nazwane w sposób, który jasno określa ich przeznaczenie. Dzięki temu, kod staje się bardziej zrozumiały i łatwiejszy do utrzymania. Warto również zauważyć, że wiele z popularnych bibliotek i frameworków JavaScript, takich jak React czy Angular, również korzysta z tej konwencji, co sprawia, że jest to umiejętność niezbędna dla każdego programisty JavaScript. Dobrą praktyką jest również przestrzeganie tej konwencji w nazwach klas i obiektów, co further enhances readability and maintainability of the code.

Pytanie 7

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

A. realizowane przez zespół testerów zatrudnionych przez firmę Google
B. przeprowadzane przez grupę docelowych użytkowników aplikacji
C. podzielone na testy funkcjonalne, wydajnościowe oraz skalowalności
D. przeprowadzane na podstawie dokumentu zawierającego przypadki testowe
Testy Beta są kluczowym etapem w procesie publikacji aplikacji mobilnej w sklepie Google Play, ponieważ pozwalają na uzyskanie cennych informacji zwrotnych od rzeczywistych użytkowników aplikacji. W tej fazie aplikacja jest udostępniana ograniczonej grupie docelowych użytkowników, którzy są zainteresowani testowaniem oprogramowania przed jego oficjalnym wydaniem. Użytkownicy ci mają możliwość zgłaszania błędów, proponowania ulepszeń oraz oceny funkcjonalności, co jest niezwykle ważne, aby zapewnić, że produkt spełnia wymagania rynku. Przykładem zastosowania testów Beta może być aplikacja społecznościowa, która w pierwszej fazie testowania pozwala wybranej grupie użytkowników na dzielenie się swoimi doświadczeniami. Otrzymane dane są następnie analizowane w celu wprowadzenia niezbędnych poprawek przed pełnym wprowadzeniem aplikacji na rynek. Ponadto, przeprowadzanie testów Beta jest zgodne z najlepszymi praktykami w branży oprogramowania, zgodnie z metodykami Agile, które podkreślają znaczenie interakcji z użytkownikami oraz ich wkładu w rozwój produktów.

Pytanie 8

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

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

Pytanie 9

Które z wymienionych opcji wspiera osoby niewidome w korzystaniu z witryn internetowych?

A. Ograniczenie liczby grafik na stronie
B. Umożliwienie modyfikacji czcionki
C. Implementacja czytnika ekranu (screen reader)
D. Zmiana rozdzielczości ekranu
Dodanie czytnika ekranu (screen reader) jest kluczowym rozwiązaniem, które znacząco ułatwia osobom niewidomym i słabowidzącym korzystanie z serwisów internetowych. Czytniki ekranu to oprogramowanie przekształcające tekst na stronie internetowej na mowę, co pozwala użytkownikom na interakcję z treścią dostępną w internecie. Technologia ta opiera się na standardach dostępności, takich jak WCAG (Web Content Accessibility Guidelines), które zalecają projektowanie stron przyjaznych dla osób z różnymi niepełnosprawnościami. Przykładem działania czytnika ekranu może być program JAWS, który umożliwia użytkownikom nawigację po stronach internetowych poprzez komendy klawiaturowe oraz odczytywanie treści na głos. Dzięki czytnikom ekranu, osoby niewidome mają możliwość dostępu do informacji, komunikacji oraz interakcji w sieci, co wpisuje się w ideę cyfrowej inkluzji i równości szans. Wprowadzenie czytnika ekranu na stronie internetowej to nie tylko techniczne wsparcie, ale również wyraz odpowiedzialności społecznej, mający na celu zapewnienie, że wszyscy użytkownicy mają równe prawo do korzystania z zasobów w sieci.

Pytanie 10

Jaką funkcję pełnią okna dialogowe niemodalne?

A. wstrzymywania działania aplikacji w czasie wprowadzania oraz zatwierdzania danych
B. zarządzania stanem aplikacji za pomocą systemów menu
C. zarządzania ustawieniami aplikacji, jako okno, które pozostaje widoczne na ekranie przez cały czas trwania aplikacji
D. prezentowania komunikatów, które wymagają potwierdzenia, aby kontynuować działanie aplikacji
Okna dialogowe niemodalne umożliwiają interakcję z innymi elementami aplikacji nawet wtedy, gdy są otwarte. Są często wykorzystywane w ustawieniach aplikacji, pozwalając użytkownikowi na wprowadzanie zmian i jednoczesne korzystanie z innych funkcji programu.

Pytanie 11

Wskaż poprawny komentarz jednoliniowy, który można dodać w linii 3 w miejscu znaków zapytania, aby był zgodny ze składnią i opisywał operację przeprowadzoną w tej linii?

Ilustracja do pytania
A. # wyswietlenie elementu tablicy
B. // wyswietlenie elementu tablicy
C. // wypełnienie elementu tablicy
D. # wypełnienie elementu tablicy
Odpowiedź // wyswietlenie elementu tablicy jest poprawna, ponieważ komentarze jednoliniowe w języku C# rozpoczynają się od dwóch ukośników: //. W tym przypadku linia Console.WriteLine(i); odpowiedzialna jest za wyświetlenie elementu tablicy na konsoli. Komentarz ten poprawnie opisuje, co robi dana linia kodu, co jest dobrą praktyką w programowaniu, ponieważ ułatwia zrozumienie funkcji kodu innym programistom lub nawet nam samym w przyszłości. Komentarze są szczególnie przydatne, gdy kod jest skomplikowany i wymaga wyjaśnień. Warto zawsze stosować komentarze, by opisywały one istotne fragmenty kodu, co znacząco zwiększa jego czytelność i utrzymywalność. Praktyka dodawania takich opisów jest zgodna z zasadami czystego kodu, które promują czytelność i zrozumiałość. Dzięki takim komentarzom osoby przeglądające kod mogą szybko zorientować się, jakie funkcje pełnią poszczególne jego fragmenty, co usprawnia proces debugowania i dalszego rozwoju oprogramowania.

Pytanie 12

Jakie elementy powinny być uwzględnione w dokumentacji testowej aplikacji?

A. Zalecenia dotyczące optymalizacji kodu
B. Opis procedur testowych oraz rezultaty wykonanych testów
C. Harmonogram wdrożenia aplikacji
D. Specyfikacje techniczne serwera
Opis procedur testowych i wyników przeprowadzonych testów to kluczowy element dokumentacji testów aplikacji. Tego rodzaju dokumentacja obejmuje szczegółowe instrukcje dotyczące metod testowania, użytych narzędzi oraz kroków niezbędnych do przeprowadzenia testów jednostkowych, integracyjnych i systemowych. W dokumentacji znajdują się również raporty z wynikami testów, które wskazują, czy aplikacja działa zgodnie z wymaganiami oraz jakie błędy zostały wykryte. Testy pozwalają na wczesne wychwycenie problemów i eliminację błędów przed wdrożeniem aplikacji na produkcję, co znacząco zwiększa jakość oprogramowania. Dokumentacja testowa jest także nieocenionym źródłem informacji dla zespołów QA (Quality Assurance), umożliwiając śledzenie historii testów i zapewnienie, że wszystkie elementy aplikacji zostały przetestowane zgodnie z procedurami.

Pytanie 13

Wskaż kod, który jest funkcjonalnie równy zaprezentowanemu

Ilustracja do pytania
A. Kod 3
B. Kod 1
C. Kod 2
D. Kod 4
Kod 2 jest funkcjonalnie równorzędny do przedstawionego. Zawiera te same operacje i instrukcje, co zapewnia identyczne wyniki dla tych samych danych wejściowych.

Pytanie 14

W przypadku przedstawionego fragmentu kodu Java, wyjątek zostanie zgłoszony, gdy wartość zmiennej index wyniesie:

Ilustracja do pytania
A. 1
B. 5
C. 7
D. 0
W podanym kodzie Java mamy do czynienia z tablicą o nazwie liczby zawierającą sześć elementów: {1 2 3 4 5 6}. Indeksy tablicy w Javie zaczynają się od 0 a kończą na n-1 gdzie n to długość tablicy. W tym przypadku tablica ma długość 6 a więc jej indeksy to 0 1 2 3 4 i 5. Kiedy próbujemy uzyskać dostęp do elementu tablicy za pomocą indeksu równego długości tablicy lub większego np. 6 w tym przypadku otrzymujemy wyjątek ArrayIndexOutOfBoundsException. Jest to standardowe zachowanie w języku Java mające na celu ochronę przed błędami związanymi z nieprawidłowym dostępem do pamięci. Tego rodzaju błędy mogą prowadzić do nieprzewidywalnych zachowań programów dlatego obsługa takich wyjątków jest dobrą praktyką programistyczną. Kod zawiera blok try-catch który przechwytuje wszelkie wyjątki w tym przypadku i drukuje komunikat aby poinformować użytkownika o błędzie. Takie podejście jest zgodne z zasadami bezpiecznego programowania oraz ułatwia debugging i zarządzanie błędami w aplikacjach produkcyjnych.

Pytanie 15

Które z wymienionych działań, które są częścią procesu kreowania prostej galerii zdjęć w formie aplikacji mobilnej, powinno być realizowane przez zespół?

A. Przygotowanie testu jednostkowego dla funkcji przegladajZdjecia()
B. Wdrożenie funkcji dodajZdjecie()
C. Stworzenie dokumentacji kodu aplikacji
D. Przygotowanie i konfiguracja repozytorium dla projektu
Pozostałe odpowiedzi są zadaniami, które w większości przypadków mogą być realizowane indywidualnie, co czyni je zadaniami jednostkowymi. Implementacja funkcji dodajZdjecie() dotyczy konkretnego aspektu programistycznego, który może być wykonany przez jednego dewelopera. Wymaga ona znajomości języka programowania oraz logiki potrzebnej do dodawania zdjęć do galerii, co zazwyczaj nie wymaga współpracy z innymi członkami zespołu. Przygotowanie i skonfigurowanie repozytorium dla projektu natomiast to techniczny proces, który również najczęściej realizuje jedna osoba, odpowiedzialna za ustawienie środowiska pracy. Tworzenie testu jednostkowego dla funkcji przegladajZdjecia() to kolejny krok, który można wykonać samodzielnie, koncentrując się na testowaniu konkretnej funkcji w izolacji, bez potrzeby angażowania innych programistów. W przypadku tych zadań, choć mogą one być częścią większego projektu, to ich realizacja nie wymaga współpracy zespołowej, co sprawia, że nie są to zadania zespołowe.

Pytanie 16

Który komponent systemu komputerowego zajmuje się transferem danych pomiędzy procesorem a pamięcią RAM?

A. Zasilacz
B. Karta graficzna
C. Mostek północny (Northbridge)
D. Kontroler DMA
Mostek północny, znany również jako Northbridge, jest kluczowym elementem architektury komputerowej, który odpowiada za komunikację pomiędzy procesorem a pamięcią RAM. Jego głównym zadaniem jest koordynowanie przepływu danych w systemie oraz zapewnienie szybkiego dostępu do pamięci, co jest niezbędne dla wydajności całego systemu. Mostek północny jest odpowiedzialny za zarządzanie magistralami danych, a także interfejsami, takimi jak PCI Express, które łączą różne komponenty. Dzięki zastosowaniu standardów, takich jak DDR (Double Data Rate), mostek północny umożliwia efektywne przesyłanie danych w wysokiej prędkości. Praktycznym przykładem działania mostka północnego jest sytuacja, kiedy procesor potrzebuje załadować dane z pamięci RAM do rejestrów – mostek północny zarządza tym procesem, minimalizując opóźnienia i maksymalizując wydajność. W nowoczesnych systemach komputerowych mostek północny jest często zintegrowany z procesorem, co dodatkowo zwiększa efektywność komunikacji oraz zmniejsza czas dostępu do danych.

Pytanie 17

Wskaż typy numeryczne o stałej precyzji

A. float, double
B. int, short, long
C. bool char, string
D. long long, long double
Typy stałoprzecinkowe, takie jak int, short i long, przechowują liczby całkowite bez części ułamkowej. Są to podstawowe typy danych w wielu językach programowania, używane do przechowywania liczb całkowitych różnej wielkości.

Pytanie 18

Co to jest Webpack?

A. Biblioteka do testowania kodu JavaScript
B. System zarządzania bazami danych dla aplikacji Node.js
C. Narzędzie do budowania modułów i zarządzania zależnościami w aplikacjach JavaScript
D. Framework JavaScript do tworzenia aplikacji mobilnych
Webpack to zaawansowane narzędzie do budowania modułów, które znacząco ułatwia zarządzanie zależnościami w aplikacjach JavaScript. Umożliwia on zorganizowane łączenie różnych zasobów, takich jak skrypty JavaScript, style CSS, obrazy i inne pliki, w jeden lub kilka plików wyjściowych. Dzięki temu programiści mogą zoptymalizować czas ładowania aplikacji, minimalizując rozmiar plików i eliminując zbędne zapytania do serwera. Przykładowo, korzystając z Webpacka, można skonfigurować automatyczną kompresję kodu i zastosowanie technik takich jak kod dzielony (code splitting), co znacząco podnosi wydajność aplikacji. Dodatkowo, Webpack wspiera różne wtyczki i loadery, co pozwala na łatwą integrację z narzędziami do kompilacji, takimi jak Babel, umożliwiający użycie nowoczesnych funkcji JavaScript, które mogą nie być jeszcze wspierane przez wszystkie przeglądarki. Standardy branżowe kładą duży nacisk na efektywność i utrzymywalność kodu, a Webpack, będąc częścią ekosystemu JavaScript, skutecznie wspiera te zasady.

Pytanie 19

Gdzie są przechowywane informacje w sytuacji korzystania z chmury obliczeniowej?

A. Na zdalnych serwerach dostawcy usług
B. Na dysku twardym użytkownika
C. Na lokalnym serwerze użytkownika
D. Na nośnikach optycznych użytkownika
Dane w chmurze obliczeniowej są przechowywane przede wszystkim na zdalnych serwerach dostawcy usług chmurowych. Tego rodzaju przechowywanie danych ma na celu zapewnienie wysokiej dostępności, skalowalności oraz bezpieczeństwa. Dostawcy usług chmurowych, tacy jak Amazon Web Services, Microsoft Azure czy Google Cloud Platform, inwestują w infrastrukturę, która obejmuje centra danych rozmieszczone na całym świecie. Te centra danych są wyposażone w zaawansowane systemy zabezpieczeń, takie jak firewall'e, szyfrowanie danych i systemy detekcji intruzów. Dzięki temu użytkownicy mogą mieć pewność, że ich dane są bezpieczne. Dodatkowo, zdalne serwery oferują elastyczność w zakresie przydzielania zasobów obliczeniowych, co pozwala na dynamiczne reagowanie na zmieniające się potrzeby biznesowe. Warto również wspomnieć o standardach bezpieczeństwa, takich jak ISO 27001 czy SOC 2, które regulują sposób przechowywania i zarządzania danymi w chmurze, zapewniając zgodność z najlepszymi praktykami branżowymi.

Pytanie 20

Która z poniższych technologii służy do tworzenia interfejsu użytkownika zarówno dla aplikacji webowych jak i mobilnych?

A. jQuery
B. React Native
C. Angular
D. Vue.js
React Native to framework stworzony przez Facebook, który pozwala na tworzenie natywnych aplikacji mobilnych przy użyciu JavaScriptu oraz React. Jego największą zaletą jest możliwość współdzielenia kodu pomiędzy aplikacjami mobilnymi a webowymi, co znacząco przyspiesza proces developmentu i redukuje koszty. React Native umożliwia wykorzystanie jednego kodu źródłowego do budowy aplikacji zarówno na systemy iOS, jak i Android, co jest idealnym rozwiązaniem w kontekście rosnącego zapotrzebowania na aplikacje wieloplatformowe. Framework ten korzysta z natywnych komponentów UI, co przekłada się na wysoką wydajność oraz natywne wrażenia użytkownika. Przykłady zastosowania React Native można znaleźć w popularnych aplikacjach, takich jak Instagram czy Airbnb, które z powodzeniem wykorzystują ten framework do tworzenia dynamicznych i responsywnych interfejsów. Dobre praktyki przy używaniu React Native obejmują optymalizację komponentów, stosowanie odpowiednich bibliotek do nawigacji oraz zarządzania stanem aplikacji.

Pytanie 21

Które z poniższych nie jest algorytmem sortowania?

A. Binary Search
B. Quick Sort
C. Merge Sort
D. Bubble Sort
Wszystkie pozostałe odpowiedzi dotyczą algorytmów sortowania, które mają na celu uporządkowanie danych w określony sposób. Quick Sort to popularny algorytm sortowania, który stosuje technikę dzielenia i podbijania, dzieląc zbiór na mniejsze części i sortując je rekurencyjnie. Jego średnia złożoność czasowa wynosi O(n log n), co czyni go bardzo efektywnym w praktycznych zastosowaniach. Merge Sort natomiast, to algorytm, który również działa na zasadzie podziału, ale łączy uporządkowane podzbiory, co pozwala na zapewnienie stabilności sortowania. Jego złożoność czasowa wynosi O(n log n) w najgorszym przypadku, co czyni go odpowiednim do sortowania dużych zbiorów danych. Bubble Sort, choć mniej efektywny (O(n²)), jest często używany do nauki podstaw algorytmów sortowania ze względu na swoją prostotę. Zrozumienie tych algorytmów jest kluczowe dla programistów, gdyż wybór odpowiedniego algorytmu sortowania może znacznie wpłynąć na wydajność aplikacji. Typowym błędem myślowym jest utożsamianie przeszukiwania z sortowaniem, co prowadzi do zamieszania w temacie algorytmów i ich zastosowań. W praktyce należy rozróżnić te dwa podejścia, aby skutecznie wykorzystywać je w projektach programistycznych.

Pytanie 22

Termin ryzyko zawodowe odnosi się do

A. ciężkości skutków niepożądanych zdarzeń związanych z pracą
B. efektów zagrożeń wypadkowych, jakie występują w miejscu zatrudnienia
C. zagrożenia wypadkowego, które może wystąpić w miejscu pracy
D. prawdopodobieństwa, że zdarzenia niepożądane związane z pracą spowodują straty, w szczególności negatywne skutki zdrowotne dla pracowników
Ryzyko zawodowe to prawdopodobieństwo wystąpienia niepożądanych zdarzeń związanych z pracą, mogących prowadzić do strat zdrowotnych lub materialnych. Ocena ryzyka to kluczowy element zarządzania bezpieczeństwem pracy.

Pytanie 23

Która z wymienionych cech dotyczy klasy statycznej?

A. Nie może zawierać ani zmiennych, ani metod
B. Może być dziedziczona przez klasy potomne
C. Może zawierać wyłącznie statyczne pola i metody
D. Jest automatycznie usuwana po zakończeniu działania programu
Klasa, która nie może zawierać zmiennych ani metod, jest w rzeczywistości pusta i nie spełnia żadnych praktycznych funkcji. Dziedziczenie klas statycznych jest niemożliwe, ponieważ nie można ich instancjonować, co eliminuje potrzebę dziedziczenia. Klasy, które są automatycznie usuwane po zakończeniu programu, to standardowe klasy, a nie klasy statyczne – proces usuwania obiektów leży w gestii destruktorów i mechanizmu garbage collection.

Pytanie 24

Który z wymienionych typów testów najlepiej ocenia odporność aplikacji na intensywne obciążenie?

A. Testy zgodności
B. Testy funkcjonalne
C. Testy bezpieczeństwa
D. Testy obciążeniowe
Testy funkcjonalne koncentrują się na sprawdzeniu, czy aplikacja działa zgodnie ze specyfikacją, ale nie analizują jej wydajności pod obciążeniem. Testy zgodności badają, czy aplikacja spełnia wymagania regulacyjne i standardy branżowe, co nie ma bezpośredniego związku z obciążeniem. Testy bezpieczeństwa analizują podatności aplikacji na ataki zewnętrzne i wewnętrzne, ale ich celem nie jest ocena wydajności pod dużym ruchem użytkowników.

Pytanie 25

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

A. przechowywanie ściągniętych i przetworzonych informacji
B. przekazywanie danych do widoku oraz wymiana informacji z modelem
C. zarządzanie logiką aplikacji - obejmuje wdrażanie algorytmów
D. obsługa interakcji użytkownika, stworzenie UI
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.

Pytanie 26

Jakie środowisko jest natywne do tworzenia aplikacji desktopowych w języku C#?

A. MS Visual Studio
B. PyCharm
C. Eclipse
D. NetBeans
MS Visual Studio to środowisko natywne do programowania aplikacji desktopowych w języku C#. To jedno z najczęściej używanych IDE do programowania w ekosystemie Microsoftu, oferujące wsparcie dla debugowania, projektowania interfejsu użytkownika i integracji z .NET. Visual Studio posiada również zaawansowane narzędzia do refaktoryzacji kodu, analizy oraz tworzenia aplikacji webowych i mobilnych.

Pytanie 27

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

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

Pytanie 28

Co to jest API w kontekście programowania?

A. System zarządzania relacyjnymi bazami danych
B. Interfejs programistyczny aplikacji, który definiuje sposób komunikacji między różnymi komponentami oprogramowania
C. Narzędzie do testowania interfejsu użytkownika aplikacji
D. Metoda kompresji danych w aplikacjach webowych
API, czyli Interfejs Programistyczny Aplikacji, to zestaw reguł i protokołów, które umożliwiają różnym komponentom oprogramowania komunikację ze sobą. W praktyce API działa jako most między różnymi systemami, pozwalając na wymianę danych oraz funkcji. Na przykład, API może być wykorzystywane do integracji z zewnętrznymi serwisami, takimi jak systemy płatności, co pozwala na łatwe wdrożenie funkcji zakupów online w aplikacji. Stosowanie API zgodnie z zasadami RESTful czy GraphQL jest powszechną praktyką, ponieważ ułatwia rozwój i utrzymanie aplikacji, umożliwiając tworzenie skalowalnych rozwiązań. Co więcej, dobrze zdefiniowane API zwiększa bezpieczeństwo aplikacji, ograniczając bezpośredni dostęp do wewnętrznych mechanizmów oraz danych. Firmy często tworzą dokumentację API, aby programiści mogli szybko zrozumieć, jak z niego korzystać, co jest zgodne z zasadami dobrych praktyk w branży programistycznej.

Pytanie 29

Zestaw operatorów, który został przedstawiony, należy do kategorii operatorów

Ilustracja do pytania
A. porównawczymi
B. przypisania
C. logicznymi
D. arytmetycznych
Przedstawiony zbiór operatorów należy do grupy operatorów arytmetycznych, które wykonują podstawowe operacje matematyczne, takie jak dodawanie, odejmowanie, mnożenie i dzielenie. Są one podstawą obliczeń w większości języków programowania.

Pytanie 30

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

A. Dyskopatia
B. kifoza
C. zespół suchego oka
D. zespól cieśni kanału nadgarstka
Zespół cieśni kanału nadgarstka to schorzenie, które powstaje w wyniku ucisku na nerw pośrodkowy w kanale nadgarstka. Jest to wąski tunel utworzony przez kości nadgarstka oraz więzadła, przez który przechodzą ścięgna oraz nerwy odpowiedzialne za czucie i ruch w dłoni. Objawy zespołu cieśni kanału nadgarstka obejmują bóle, drętwienie oraz zaburzenia czucia, szczególnie w obszarze pierwszych trzech palców ręki. Praca z myszą komputerową i klawiaturą przez długi czas, szczególnie w niewłaściwej ergonomicznej pozycji, może prowadzić do nadmiernego obciążenia i zapalenia tkanek otaczających nerw pośrodkowy. W praktyce, osoby cierpiące na to schorzenie często skarżą się na problemy z chwytaniem przedmiotów, a także na osłabienie siły uchwytu. W leczeniu zespołu cieśni kanału nadgarstka zaleca się m.in. unikanie czynników przyczynowych, stosowanie ortez, fizjoterapię oraz w niektórych przypadkach leczenie chirurgiczne. Należy również zwrócić uwagę na ergonomię stanowiska pracy, co może znacząco zredukować ryzyko wystąpienia tej dolegliwości. Zarządzanie czasem spędzanym przy komputerze oraz regularne przerwy są kluczowe w prewencji tego schorzenia.

Pytanie 31

Która biblioteka JavaScript jest najczęściej używana do tworzenia testowalnych funkcji asynchronicznych?

A. Underscore.js
B. Moment.js
C. D3.js
D. Axios
Moment.js, D3.js i Underscore.js to biblioteki, które pełnią zupełnie inne funkcje w porównaniu do Axios. Moment.js jest używany głównie do manipulacji datami i czasem, co jest niezwykle przydatne w kontekście tworzenia aplikacji, które wymagają zaawansowanej obsługi dat i stref czasowych. Z drugiej strony, D3.js to potężne narzędzie do wizualizacji danych, pozwalające na tworzenie skomplikowanych wykresów i diagramów w przeglądarkach. Jego zastosowanie w asynchronicznym programowaniu jest ograniczone, ponieważ koncentruje się na prezentacji danych, a nie na ich pozyskiwaniu czy przetwarzaniu. Underscore.js jest z kolei biblioteką, która dostarcza funkcje pomocnicze do programowania funkcyjnego, ułatwiając pracę z kolekcjami danych, ale nie ma bezpośredniego związku z asynchronicznymi żądaniami HTTP. Typowym błędem może być mylenie funkcji każdej z tych bibliotek. Często programiści mogą pomyśleć, że każda z tych bibliotek wspiera asynchroniczność, jednak to Axios w tej dziedzinie jest liderem. Warto zwrócić uwagę, że wybór odpowiedniego narzędzia do konkretnego zadania jest kluczowy w programowaniu, a zrozumienie funkcji każdej biblioteki pozwala na efektywniejsze rozwiązywanie problemów.

Pytanie 32

Co oznacza pojęcie 'hoisting' w JavaScript?

A. Technika optymalizacji kodu przez silnik JavaScript
B. Metoda ładowania skryptów z zewnętrznych źródeł
C. Proces podnoszenia deklaracji zmiennych i funkcji na górę zakresu
D. Mechanizm zarządzania pamięcią w przeglądarce
Hoisting to mechanizm w JavaScript, który polega na tym, że deklaracje zmiennych i funkcji są przenoszone na górę zakresu, w którym zostały zadeklarowane. Oznacza to, że możesz używać zmiennych i funkcji przed ich faktyczną deklaracją w kodzie. Na przykład, jeśli zadeklarujesz zmienną za pomocą 'var' lub funkcję, możesz odwołać się do niej wcześniej, a JavaScript zrozumie, o co chodzi. Przykład: jeśli napiszesz 'console.log(x); var x = 5;', to nie dostaniesz błędu, ponieważ 'x' jest hoistowane na górę, jednak jej wartość będzie 'undefined' do momentu przypisania jej wartości. Zrozumienie hoistingu jest kluczowe dla pisania poprawnego kodu w JavaScript, ponieważ może to prowadzić do zaskakujących rezultatów. Warto wiedzieć, że hoisting nie działa w ten sam sposób dla deklaracji 'let' i 'const'. Te zmienne są hoistowane, ale nie mogą być używane przed ich deklaracją, co prowadzi do błędu 'Temporal Dead Zone'. Dlatego zaleca się unikanie deklaracji zmiennych w sposób, który może prowadzić do nieporozumień, i zawsze deklarować zmienne na początku zakresu, w którym będą używane.

Pytanie 33

Jaka będzie zawartość zmiennej filteredItems po wykonaniu poniższego kodu?

const items = [ { id: 1, name: 'phone', price: 500 }, { id: 2, name: 'laptop', price: 1000 }, { id: 3, name: 'tablet', price: 750 } ]; const filteredItems = items.filter(item => item.price > 600) .map(item => item.name);

A. ['phone']
B. [{id: 2, name: 'laptop', price: 1000}, {id: 3, name: 'tablet', price: 750}]
C. ['laptop', 'tablet', 'phone']
D. ['laptop', 'tablet']
W kontekście analizy błędnych odpowiedzi, istotne jest, aby zrozumieć, jak działają metody filter oraz map, które są kluczowe w tym przykładzie. Gdybyśmy zajęli się odpowiedzią, która wskazuje na to, że filteredItems to ['phone'], to błędne jest założenie, że 'phone' spełnia warunek price > 600. W rzeczywistości jego cena wynosi 500, co nie kwalifikuje go do dołączenia do wynikowej tablicy. Kolejna odpowiedź sugerująca, że filteredItems to [{id: 2, name: 'laptop', price: 1000}, {id: 3, name: 'tablet', price: 750}] nie uwzględnia, że metoda map zmienia obiekty na ich nazwy, a nie zwraca pełnych obiektów. To pokazuje nieporozumienie dotyczące łańcuchowego wywołania metod w JavaScript. Ostatnia opcja, która sugeruje, że do filteredItems dołączy się również 'phone', wynika z błędnego zrozumienia zasadności filtracji oraz pierwszeństwa warunków w metodach. Aby skutecznie korzystać z takich metod, ważne jest, aby dobrze zrozumieć ich działanie oraz potrafić analizować dane według zadanych kryteriów. W praktyce, często używa się takich metod w aplikacjach webowych do przetwarzania i wyświetlania zestawów danych, co czyni umiejętność ich zastosowania niezwykle istotną.

Pytanie 34

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

A. Kompilator, edytor kodu, debugger
B. Edytor graficzny, przeglądarka kodu, narzędzia analityczne
C. Edytor tekstowy, przeglądarka internetowa, translator
D. Kompilator, serwer webowy, system kontroli wersji
Kompilator, edytor kodu i debugger to podstawowe narzędzia, które stanowią fundament każdego środowiska IDE (Integrated Development Environment). Kompilator tłumaczy kod źródłowy na pliki wykonywalne, edytor kodu umożliwia tworzenie i modyfikowanie kodu, a debugger pomaga w analizowaniu i eliminowaniu błędów. Współdziałanie tych narzędzi pozwala programiście na pełny cykl tworzenia aplikacji – od pisania kodu, przez testowanie, aż po finalne wdrożenie. Dzięki integracji tych narzędzi w jednym środowisku, praca staje się bardziej efektywna i intuicyjna.

Pytanie 35

Które z poniższych stwierdzeń najlepiej charakteryzuje tablicę asocjacyjną?

A. Tablica, która zmienia swoje wymiary w trakcie działania programu
B. Tablica, która przechowuje wyłącznie dane tekstowe
C. Tablica przechowująca dane w formie par klucz-wartość
D. Tablica, która przechowuje wartości, do których można uzyskać dostęp tylko za pomocą indeksów numerycznych
A więc zwykła tablica działa na zasadzie numerów, nie ma kluczy tekstowych, więc nie ma mowy o parach klucz-wartość. Co prawda, tablice dynamiczne potrafią zmieniać rozmiar, ale mimo to, nie dadzą rady zorganizować danych w taki sposób. Tekst czy inne typy danych w tablicach są po prostu przechowywane jak inne. Kluczowa różnica jest taka, że tablice asocjacyjne pozwalają na użycie kluczy, co czyni je bardziej elastycznymi. Trochę się zgubiłeś w tym wszystkim.

Pytanie 36

W zaprezentowanym fragmencie kodu występuje błąd logiczny. Na czym on polega?

Ilustracja do pytania
A. niewłaściwym warunku pętli, co powoduje, że pętla nigdy się nie wykona
B. niepoprawnym użyciu funkcji cout, co skutkuje tym, że zmienna jest wczytywana w pętli
C. nieprawidłowym warunku pętli, który sprawia, że pętla jest nieskończona
D. braku zainicjowania zmiennej x, co powoduje, że zmienna nie ma wartości początkowej
Nieprawidłowy warunek pętli powoduje, że staje się ona nieskończona, co jest częstym problemem w programowaniu. W tym przypadku warunek while(x != 0 || x != 5) jest zawsze prawdziwy, ponieważ dla każdej wartości x, która nie jest jednocześnie równa 0 i 5, pętla nigdy się nie zakończy. To logiczny błąd, ponieważ zmienna x nigdy nie osiągnie stanu, w którym oba warunki będą jednocześnie fałszywe. W praktyce powinno się stosować warunki logiczne, które mogą stać się fałszywe dla jakiegoś stanu zmiennych, co pozwala pętli zakończyć działanie. Częstym wzorcem jest użycie operatora && zamiast ||, aby sprawdzić, czy zmienna osiągnęła konkretny zakres wartości. W ten sposób można zagwarantować, że program nie wejdzie w nieskończoną pętlę. Tego typu błędy są często wykrywane podczas testowania i debugowania kodu, a ich unikanie jest kluczowe w zapewnieniu poprawnego działania aplikacji. Dobre praktyki obejmują dokładne przemyślenie warunków pętli i testowanie ich w różnych scenariuszach.

Pytanie 37

Jaki typ złośliwego oprogramowania funkcjonuje w tle, zbierając dane o wprowadzanych hasłach?

A. Adware
B. Spyware
C. Keylogger
D. Trojan
Trojan, spyware i adware to inne rodzaje złośliwego oprogramowania, które różnią się od keyloggerów. Trojan to taki program, który niby jest legalny, ale tak naprawdę wprowadza złośliwe kody do systemu. Nie zawsze oczywiście rejestruje naciśnięcia klawiszy, ale potrafi wpuścić inne złośliwe oprogramowanie, które już działa jak keylogger. Spyware zbiera dane o użytkownikach, ale to bardziej pasywne działanie, więc nie zawsze chodzi o klawisze. Adware z kolei wyświetla uciążliwe reklamy, jego celem jest zarabianie na reklamach. Mimo że adware może zbierać dane, to nie jest tak groźne jak keyloggery, które naprawdę potrafią przechwycić hasła i inne poufne informacje. Każdy z tych typów malware ma swoje unikalne cechy i sposoby działania.

Pytanie 38

Jakie informacje mogą być zapisywane w cookies przeglądarki?

A. Dane przechowywane w systemie baz danych
B. Kod źródłowy aplikacji internetowej
C. Prywatne dane użytkownika, na przykład hasła
D. Preferencje użytkownika, takie jak język lub styl strony
Preferencje użytkownika, takie jak język strony, motyw kolorystyczny lub preferencje dotyczące układu, są typowymi danymi przechowywanymi w ciasteczkach przeglądarki. Mechanizm ciasteczek pozwala na personalizację doświadczenia użytkownika i jest szeroko stosowany w aplikacjach webowych w celu dostosowania interfejsu do indywidualnych potrzeb. Cookies umożliwiają także zapamiętywanie sesji użytkownika, co pozwala uniknąć konieczności wielokrotnego logowania. Informacje te są przechowywane lokalnie w przeglądarce użytkownika i mogą być odczytywane przez aplikację podczas każdej wizyty. Stosowanie ciasteczek zgodnie z przepisami, takimi jak RODO (GDPR), wymaga informowania użytkownika o ich przeznaczeniu oraz uzyskiwania jego zgody na ich przechowywanie, co zapewnia transparentność i zgodność z prawem.

Pytanie 39

Który z poniższych przykładów stanowi aplikację mobilną wykorzystującą bazę danych?

A. Aplikacja gromadząca listę kontaktów użytkownika
B. Aplikacja do robienia zdjęć
C. Aplikacja wyświetlająca lokalny czas
D. Aplikacja kalkulator
Aplikacja przechowująca listę kontaktów użytkownika korzysta z bazy danych do przechowywania, odczytywania i zarządzania danymi. Tego typu aplikacje mobilne muszą efektywnie zarządzać dużą ilością danych i zapewniać ich szybki dostęp. Bazy danych, takie jak SQLite czy Firebase, są szeroko stosowane w aplikacjach mobilnych, umożliwiając przechowywanie kontaktów, wiadomości, notatek i innych informacji użytkownika. Dzięki bazom danych możliwe jest także synchronizowanie danych pomiędzy urządzeniami i przechowywanie ich w chmurze.

Pytanie 40

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

A. Dobra niematerialne
B. Własność przemysłowa
C. Prawa pokrewne
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.