Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 8 czerwca 2026 07:49
  • Data zakończenia: 8 czerwca 2026 07:55

Egzamin zdany!

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

Wymagane minimum: 20 punktów (50%)

Nowe
Analiza przebiegu egzaminu- sprawdź jak rozwiązywałeś pytania
Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

Jaki jest wymagany sposób do realizacji algorytmu sortowania bąbelkowego na n-elementowej tablicy?

A. n-liczby warunków
B. jedna pętla operująca na 2n elementach oraz warunek
C. dwie pętle działające na najwyżej n-elementach każda
D. dwie pętle funkcjonujące na co najmniej (n+1) elementach każda
Aby zaimplementować algorytm sortowania bąbelkowego, potrzebne są dwie pętle iteracyjne, które porównują i zamieniają miejscami elementy tablicy. Zewnętrzna pętla iteruje po całej tablicy, natomiast wewnętrzna pętla wykonuje kolejne porównania i przestawia elementy, jeśli są one w nieprawidłowej kolejności. Algorytm sortowania bąbelkowego charakteryzuje się prostotą, ale jego złożoność obliczeniowa wynosi O(n²), co czyni go mało efektywnym dla dużych zbiorów danych. Niemniej jednak, jest to jedno z pierwszych ćwiczeń programistycznych, które wprowadza do zagadnień algorytmicznych i uczy podstaw iteracji oraz manipulacji tablicami. Pomimo swojej niskiej wydajności, sortowanie bąbelkowe jest często wykorzystywane do celów edukacyjnych oraz w przypadkach, gdy prostota implementacji ma większe znaczenie niż szybkość działania.

Pytanie 2

Jakie informacje zawiera zestaw instrukcji (ISA) danego procesora?

A. Układ połączeń między procesorem a innymi elementami
B. Metodę obsługi pamięci podręcznej
C. Typy danych, które są trzymane w pamięci
D. Instrukcje, które procesor jest w stanie wykonać
Zestaw instrukcji, znany jako ISA, to taki jakby słownik poleceń, które procesor potrafi zrozumieć i wykonać. To mega ważny element w projektowaniu komputerów, bo to właśnie od niego zależy, jak dobrze i szybko działa system. Mamy różne rodzaje instrukcji, na przykład te do wykonywania działań matematycznych, logicznych, czy do przenoszenia danych. Popularne zestawy jak x86 albo ARM pokazują, jak programy rozmawiają z procesorem. Jak zrozumiesz ISA, to będzie łatwiej pisać lepszy kod i dostosowywać aplikacje do różnych architektur. No i co ważne, ISA też mówi, jak procesor interpretuje te instrukcje i zarządza danymi, co ma ogromny wpływ na to, jak wydajnie wszystko działa.

Pytanie 3

Pętla przedstawiona w zadaniu działa na zmiennej typu string o nazwie ciag. Jej celem jest:

int i = 0;
while (ciag[i] != 0)  {
    if (ciag[i] > 96 && ciag[i] < 123)  {
        ciag[i] = (ciag[i] - 32);
    }
    i++;
}
A. Od każdego znaku w ciągu, który nie jest równy 0, odjąć kod 32.
B. Zamienić w ciągu małe litery na wielkie.
C. Od każdego znaku w ciągu odjąć kod 32.
D. Zamienić w ciągu wielkie litery na małe.
Pętla, która zamienia małe litery na wielkie, to naprawdę fajny przykład tego, jak można operować na tekstach. W zasadzie każdy znak w napisie jest przeszukiwany, a jeśli to litera, to modyfikujemy jej kod ASCII. W praktyce dodajemy lub odejmujemy 32, żeby uzyskać odpowiednią wielką literę. Tego typu operacje wykorzystuje się w wielu miejscach, jak na przykład przy filtrowaniu danych czy normalizacji tekstu. No i oczywiście w systemach wyszukujących, gdzie wielkość liter ma znaczenie. Warto umieć zaimplementować taką pętlę, bo przydaje się w różnych aplikacjach, szczególnie tam, gdzie tekst jest kluczowy.

Pytanie 4

Środowiskiem dedykowanym do tworzenia aplikacji mobilnych dla urządzeń Apple i wykorzystującym do tego celu różne języki programowania w tym Java i Objective C jest

A. Android Studio
B. XCode
C. React Native
D. NetBeans
XCode to środowisko, które faktycznie jest fundamentem tworzenia aplikacji na urządzenia Apple, czyli iPhone’y, iPady czy nawet MacBooki. Apple od lat inwestuje w rozwój XCode i właśnie tam programiści mogą budować zarówno aplikacje natywne, jak i np. gry – i to z wykorzystaniem różnych języków, takich jak Objective-C i Swift. Co ciekawe, dawniej używano też Objective-C prawie wyłącznie, ale od kilku lat Apple promuje Swift, bo jest nowocześniejszy i dużo przyjemniej się w nim pisze. Moim zdaniem XCode to taki niezbędnik – bez niego praktycznie nie da się pisać porządnych aplikacji na iOS czy macOS. Samo środowisko jest zintegrowane ze wszystkimi narzędziami Apple: symulatorem urządzeń, Interface Builderem do projektowania graficznego oraz narzędziami do debugowania i testowania. Z mojego doświadczenia, jak ktoś zaczyna przygodę z aplikacjami mobilnymi dla Apple, to właśnie XCode jest pierwszym programem, z którym spędzi dużo czasu. I trochę ułatwia życie, bo automatycznie konfiguruje projekty pod standardy Apple, nie trzeba nic ręcznie ustawiać. To też świetne miejsce do nauki, bo dokumentacja jest wprost wbudowana w środowisko. Co ważne, XCode jest wymagany, żeby wrzucić gotową aplikację do App Store – tak jest po prostu zrobiony ekosystem Apple i żadna alternatywa nie daje tyle integracji i wsparcia dla natywnych rozwiązań Apple.

Pytanie 5

Co to jest JWT (JSON Web Token)?

A. Protokół komunikacyjny do transferu danych między klientem a serwerem
B. Format zapisu danych używany w bazach NoSQL
C. Biblioteka JavaScript do walidacji formularzy webowych
D. Standard definiujący sposób bezpiecznego przekazywania informacji jako obiekt JSON
JWT, czyli JSON Web Token, jest standardem, który definiuje sposób bezpiecznego przekazywania informacji między dwiema stronami w postaci obiektu JSON. Tokeny JWT są powszechnie wykorzystywane w systemach autoryzacji i autoryzacji, umożliwiając przekazywanie zweryfikowanych i podpisanych danych. Struktura tokena składa się z trzech części: nagłówka, ładunku (payload) oraz podpisu. Nagłówek zazwyczaj określa typ tokena oraz algorytm użyty do podpisania, ładunek zawiera dane, które chcemy przesłać, a podpis jest generowany przy użyciu tajnego klucza, co zapewnia integralność danych. Przykładem zastosowania JWT może być system logowania, gdzie po pomyślnym zalogowaniu użytkownik otrzymuje token, który jest następnie używany do autoryzacji kolejnych zapytań do serwera. Dzięki swojej strukturze, JWT nie tylko zwiększa bezpieczeństwo, ale także umożliwia łatwą wymianę informacji między różnymi systemami, co jest szczególnie ważne w architekturach mikroserwisowych.

Pytanie 6

W jakiej fazie cyklu życia projektu informatycznego następuje integracja oraz testowanie wszystkich modułów systemu?

A. Etap planowania
B. Etap implementacji
C. Faza analizy
D. Faza wdrożenia
Planowanie to faza początkowa, w której określane są cele projektu, harmonogram i zasoby, ale nie jest to etap integracji systemu. Analiza skupia się na zbieraniu wymagań i definiowaniu specyfikacji technicznej, ale nie obejmuje łączenia modułów ani testowania gotowego produktu. Wdrożenie to końcowy etap cyklu życia projektu, który następuje po pełnej integracji i testowaniu – polega na uruchomieniu systemu w środowisku produkcyjnym i udostępnieniu go użytkownikom końcowym.

Pytanie 7

Jaki rodzaj licencji umożliwia dowolne zmienianie oraz rozpowszechnianie kodu źródłowego?

A. Licencja shareware
B. Licencja OEM
C. Licencja komercyjna
D. Licencja GNU GPL
Licencja GNU GPL (General Public License) pozwala na swobodne modyfikowanie i rozpowszechnianie kodu źródłowego, pod warunkiem, że wszelkie zmiany i modyfikacje są również udostępniane na tych samych zasadach. Jest to jedna z najbardziej znanych licencji open-source, która gwarantuje wolność użytkownikom oprogramowania w zakresie jego analizy, modyfikacji oraz redystrybucji. Licencja ta promuje współpracę i transparentność w świecie oprogramowania, umożliwiając społeczności wspólny rozwój projektów i eliminując ograniczenia wynikające z licencji zamkniętych.

Pytanie 8

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

A. camelCase
B. snake_case
C. PascalCase
D. kebab-case
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 9

Wskaż algorytm sortowania, który nie jest stabilny?

A. sortowanie przez zliczanie
B. sortowanie bąbelkowe
C. sortowanie przez wstawianie
D. sortowanie szybkie
Sortowanie szybkie (Quick Sort) to algorytm, który faktycznie nie jest stabilny w swojej podstawowej wersji. To znaczy, jeśli w kolekcji są dwa identyczne elementy pod względem klucza sortowania, po wykonaniu Quick Sort ich kolejność względem siebie może się zmienić. Z moich doświadczeń wynika, że to może mieć znaczenie, na przykład gdy sortujemy obiekty według jednego pola, ale chcemy zachować kolejność według innego – czasem w praktyce, np. przy obsłudze rekordów w bazach danych, stabilność sortowania gwarantuje spójność wyników. Quick Sort jest jednak bardzo popularny, bo ogólnie działa bardzo szybko i jest efektywny pamięciowo, stąd często go się używa tam, gdzie stabilność nie jest wymagana. W niektórych implementacjach można próbować uczynić Quick Sort stabilnym, ale wymaga to dodatkowych zabiegów i nie jest standardem – biblioteki standardowe (np. C++ std::sort) właśnie z tego powodu nie gwarantują stabilności Quick Sorta. W praktycznych projektach, jeśli zależy Ci na stabilności, lepiej użyć sortowania przez wstawianie lub przez zliczanie. Sortowanie bąbelkowe i przez wstawianie są wręcz typowe do nauki stabilnych algorytmów, a sortowanie przez zliczanie nawet dla dużych zbiorów cały czas pilnuje kolejności równych elementów. Quick Sort jest świetny, ale warto znać jego ograniczenia, szczególnie w aplikacjach biznesowych albo pracy z dużymi, złożonymi strukturami danych.

Pytanie 10

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

A. Testy funkcjonalne oceniają wydajność aplikacji, podczas gdy niefunkcjonalne weryfikują poprawność kodu
B. Testy funkcjonalne są realizowane tylko przez końcowych użytkowników, natomiast niefunkcjonalne przez programistów
C. Testy funkcjonalne oceniają zgodność działania aplikacji z założeniami, a niefunkcjonalne analizują aspekty wydajności, bezpieczeństwa i użyteczności
D. Testy funkcjonalne koncentrują się na interfejsie, a niefunkcjonalne na backendzie aplikacji
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 11

Jakie jest podstawowe zadanie konstruktora w klasie?

A. Nadanie wartości polom obiektu po jego zniszczeniu
B. Inicjalizacja obiektu w momencie jego tworzenia
C. Wprowadzenie nowej metody do już istniejącej klasy
D. Usuwanie instancji obiektów
Konstruktor to specjalna metoda klasy, która jest automatycznie wywoływana podczas tworzenia nowego obiektu. Jego głównym zadaniem jest inicjalizacja pól obiektu oraz przygotowanie go do użytku. Konstruktor ma tę samą nazwę co klasa i nie zwraca żadnej wartości. Przykład w C++: `class Samochod { public: Samochod() { marka = "Nieznana"; } }`. W tym przypadku konstruktor ustawia domyślną wartość dla pola `marka`. Dzięki konstruktorom programista może automatycznie ustawić początkowe wartości, co zwiększa czytelność kodu i eliminuje potrzebę ręcznego przypisywania wartości każdemu nowemu obiektowi.

Pytanie 12

Jakie elementy powinny być ujęte w dokumentacji programu?

A. Opis funkcji, klas i zmiennych w kodzie
B. Strategia marketingowa aplikacji
C. Szczegóły dotyczące konfiguracji serwera
D. Zestawienie błędów zidentyfikowanych w trakcie testów
Opis funkcji, klas i zmiennych w kodzie to kluczowy element dokumentacji programu. Tego rodzaju dokumentacja pozwala na lepsze zrozumienie struktury aplikacji, jej logiki biznesowej oraz wzajemnych zależności pomiędzy poszczególnymi komponentami. Dokumentacja techniczna obejmuje szczegółowe informacje na temat implementacji, interfejsów API, schematów baz danych oraz sposobów integracji z innymi systemami. Dzięki niej programiści mogą szybciej wdrażać się w projekt, a błędy i niejasności są minimalizowane. Kompleksowa dokumentacja zawiera także przykłady użycia poszczególnych funkcji, co dodatkowo ułatwia rozwój i rozbudowę aplikacji. W dobrze prowadzonym projekcie dokumentacja kodu jest na bieżąco aktualizowana, co zwiększa jego przejrzystość i wspiera proces refaktoryzacji.

Pytanie 13

Który z wymienionych algorytmów najczęściej wykorzystuje rekurencję?

A. Sortowanie przez wstawianie
B. Sortowanie bąbelkowe
C. Obliczanie liczb Fibonacciego
D. Wyszukiwanie liniowe
Algorytmy obliczania liczb Fibonacciego są jednym z najbardziej klasycznych przykładów rekurencji. Algorytm ten polega na wywoływaniu funkcji, która sama odwołuje się do siebie, aby obliczyć kolejne liczby w sekwencji. Rekurencyjna natura obliczeń Fibonacciego sprawia, że algorytm jest prosty i intuicyjny w implementacji, choć może być mniej wydajny niż wersje iteracyjne. Rekurencja jest szeroko stosowana w problemach matematycznych i algorytmicznych, gdzie rozwiązanie większego problemu można uzyskać poprzez rozwiązywanie mniejszych, podobnych podproblemów.

Pytanie 14

Która z poniższych nie jest poprawną metodą HTTP?

A. GET
B. DELETE
C. SEARCH
D. POST
Wybór metod GET, POST oraz DELETE jako odpowiedzi nie jest poprawny, ponieważ wszystkie one są uznawane za standardowe metody HTTP, zdefiniowane w specyfikacjach IETF. GET jest najczęściej używaną metodą, która umożliwia pobranie zasobów z serwera, co czyni ją podstawowym narzędziem w budowie interfejsów API i aplikacji webowych. Metoda POST służy do przesyłania danych na serwer, co jest kluczowe w przypadku formularzy internetowych czy operacji tworzenia nowych zasobów. DELETE z kolei opiera się na koncepcji RESTful, gdzie pozwala na usuwanie zasobów na serwerze. Zrozumienie tych metod oraz umiejętność ich właściwego wykorzystywania jest kluczowe dla każdego programisty zajmującego się tworzeniem aplikacji webowych. Pojawienie się niektórych błędnych odpowiedzi może wynikać z mylenia pojęć związanych z metodami HTTP oraz ich zastosowaniem w praktyce. Wiele osób mylnie sądzi, że każda metoda, którą zna, musi być standardem, co prowadzi do nieporozumień i błędnych wniosków. Dobrą praktyką jest na bieżąco rozwijać swoją wiedzę na temat protokołu HTTP oraz jego metod, co ułatwi pracę i zapewni lepsze zrozumienie architektury aplikacji webowych.

Pytanie 15

Co oznacza walidacja kodu programu?

A. Czynnością weryfikującą poprawność i zgodność kodu z założeniami
B. Czynnością związaną z tworzeniem dokumentacji kodu
C. Czynnością dotyczącą publikacji aplikacji w sklepie
D. Czynnością polegającą na kompilowaniu kodu
Walidacja kodu programu to proces sprawdzania jego poprawności i zgodności z założeniami projektowymi oraz standardami programistycznymi. Celem walidacji jest wykrycie błędów logicznych, składniowych i zgodności kodu z wymaganiami aplikacji. Walidacja może obejmować analizę statyczną kodu (bez jego wykonywania) oraz testy jednostkowe i integracyjne, które sprawdzają funkcjonalność aplikacji. Dzięki walidacji programiści mogą uniknąć błędów na późniejszych etapach rozwoju projektu, co znacząco zwiększa niezawodność i stabilność aplikacji. Proces ten jest nieodzowny w metodykach Agile i Continuous Integration, gdzie regularne testowanie kodu stanowi podstawę dostarczania wysokiej jakości oprogramowania.

Pytanie 16

Jakie narzędzie najlepiej wykorzystać do testowania API REST?

A. Postman
B. Git
C. Jasmine
D. Selenium
Postman to jedno z najpopularniejszych narzędzi do testowania API REST, które oferuje wiele funkcji ułatwiających pracę z interfejsami programistycznymi. Jego intuicyjny interfejs użytkownika pozwala na łatwe wysyłanie zapytań HTTP, takich jak GET, POST, PUT, DELETE, co jest kluczowe w testowaniu API. Dzięki wsparciu dla kolekcji zapytań, użytkownicy mogą organizować i grupować swoje testy, co ułatwia zarządzanie projektem i iteracyjne testowanie. Ponadto, Postman umożliwia automatyzację testów poprzez skrypty testowe, które można uruchomić po wykonaniu zapytania, co pozwala na szybką weryfikację odpowiedzi API i ich zgodności z oczekiwaniami. Narzędzie wspiera także integracje z CI/CD, co czyni je idealnym dla zespołów pracujących w metodykach Agile. Postman jest zgodny z najlepszymi praktykami branżowymi, takimi jak RESTful API design, co czyni go niezbędnym w każdym projekcie wykorzystującym API.

Pytanie 17

Jakie jest podstawowe użycie metod wirtualnych?

A. Zapewnienie, że metoda działa wyłącznie na danych statycznych
B. Umożliwienie dynamicznego wiązania metod w czasie wykonania
C. Umożliwienie wielokrotnego dziedziczenia
D. Umożliwienie korzystania z metod bezpośrednio z klasy bazowej
Metody wirtualne umożliwiają dynamiczne wiązanie metod w czasie wykonywania programu (ang. runtime). Oznacza to, że wywołanie metody zależy od rzeczywistego typu obiektu, a nie od typu wskaźnika lub referencji, za pomocą której został on wywołany. Mechanizm ten pozwala na implementację polimorfizmu, który jest jednym z kluczowych filarów programowania obiektowego. Dzięki metodom wirtualnym można uzyskać elastyczność i rozszerzalność kodu, umożliwiając klasom pochodnym dostarczanie własnych wersji metod zdefiniowanych w klasie bazowej. To prowadzi do bardziej zorganizowanego i skalowalnego kodu, ponieważ nowe funkcjonalności można dodawać, rozszerzając istniejące klasy, zamiast modyfikować kod bazowy.

Pytanie 18

Jakie jest oznaczenie komentarza wieloliniowego w języku Java?

A. """ ... """
B. /* ... */
C. // ... //
D. <!-- ... -->
Komentarze wieloliniowe w języku Java zapisuje się właśnie w taki sposób: /* ... */. Taki zapis pozwala na umieszczenie kilku linii tekstu między znakami otwierającym /* i zamykającym */, które kompilator całkowicie ignoruje podczas tłumaczenia kodu. Z mojego doświadczenia to jest najwygodniejsza forma, kiedy trzeba wyłączyć większy fragment kodu – np. część algorytmu, której chwilowo nie chcemy wykonywać lub większy blok dokumentacji. Bardzo często używa się komentarzy wieloliniowych przy pisaniu tzw. docstringów, choć w Javie do dokumentacji API lepiej stosować komentarze JavaDoc z podwójnym ukośnikiem i gwiazdką (/** ... */), ale zwykłe /* ... */ są super uniwersalne – czy to na zajęciach, czy w dużych projektach zespołowych. Moim zdaniem, jeśli uczysz się Javy, warto pamiętać, żeby nie mieszać komentarzy wieloliniowych z jednoliniowymi (// ...), bo to czasem prowadzi do zamieszania, szczególnie przy większych refaktoryzacjach. Co ciekawe, takie same komentarze znajdziesz też w C czy C++, więc jak ktoś zna te języki, to szybko się odnajdzie. W sumie to prosta sprawa, ale zdziwiłbyś się ile osób próbuje stosować inne formaty, które działają w zupełnie innych technologiach. No i jeszcze taka drobna uwaga z praktyki: nigdy nie wstawiaj komentarza wieloliniowego wewnątrz innego; Java tego nie obsługuje i kompilator się pogubi.

Pytanie 19

Jakie funkcje realizuje polecenie "git clone"?

A. Usuwa zdalne repozytorium
B. Łączy dwa branche w repozytorium
C. Tworzy lokalną kopię już istniejącego repozytorium
D. Rejestruje zmiany w historii repozytorium
Polecenie "git clone" to w zasadzie jedna z pierwszych rzeczy, które poznaje się na początku pracy z Gitem. Służy ono do skopiowania całego istniejącego repozytorium – czyli pobiera zarówno wszystkie pliki, jak i całą historię commitów. To jest ogromnie przydatne, bo nie tylko masz najnowszy kod, ale od razu całą historię zmian, branche, tagi i inne rzeczy. Standardowo używa się tego polecenia, kiedy chcesz zacząć pracę nad projektem, który jest już na jakimś zdalnym serwerze (np. Githubie albo GitLabie). W praktyce wygląda to tak, że podajesz adres repozytorium, wpisujesz "git clone https://adres.repo.git" i po kilku chwilach masz pełną kopię projektu u siebie na dysku. Co ciekawe, narzędzie od razu ustawia Ci zdalne połączenie do pierwotnego repozytorium jako "origin", więc potem możesz spokojnie wykonywać polecenia typu git fetch, git pull czy git push. Moim zdaniem to super wygodne, bo cała struktura repozytorium, nawet z podfolderami czy nietypowymi ustawieniami, zostaje zachowana. Warto pamiętać, że git clone to nie tylko kopiowanie plików – to pobieranie całej bazy danych Git, więc masz możliwość cofania się w historii czy przeglądania wszystkich commitów lokalnie i offline. Z mojego doświadczenia: często nowi użytkownicy nie doceniają jeszcze, jak ważne jest to, żeby zawsze pracować na pełnej kopii, a nie wycinku repo. To podstawa bezpiecznej i efektywnej pracy zespołowej.

Pytanie 20

Która z niżej wymienionych pozycji jest ekwiwalentem biblioteki jQuery?

A. Express.js
B. TypeScript
C. Bootstrap
D. Lodash
Lodash to popularna biblioteka JavaScript, która dostarcza gotowe funkcje umożliwiające manipulację tablicami, obiektami oraz danymi. Lodash upraszcza wiele złożonych operacji, takich jak filtrowanie, mapowanie, sortowanie i grupowanie danych. Dzięki Lodash programiści mogą efektywnie zarządzać złożonymi strukturami danych, co prowadzi do zwiększenia czytelności i efektywności kodu. Biblioteka jest szeroko stosowana w aplikacjach frontendowych i backendowych, a jej funkcje są zoptymalizowane pod kątem wydajności, co czyni ją nieocenionym narzędziem w dużych projektach. Lodash często bywa porównywany do jQuery, jednak jego głównym celem jest manipulacja danymi, a nie elementami DOM. Dzięki swojej wszechstronności Lodash znajduje zastosowanie w niemal każdym projekcie JavaScript, zarówno w prostych aplikacjach webowych, jak i dużych projektach korporacyjnych.

Pytanie 21

Która z wymienionych aplikacji stanowi przykład prostego rozwiązania mobilnego?

A. Aplikacja do monitorowania użycia pamięci RAM
B. Aplikacja typu zegar
C. Aplikacja do analizy danych finansowych
D. Aplikacja z rozbudowanym systemem zarządzania projektami
Aplikacja typu zegar to jeden z najprostszych przykładów aplikacji mobilnej. Jej podstawowa funkcjonalność polega na wyświetlaniu aktualnego czasu oraz alarmów, a dodatkowo może zawierać funkcje takie jak minutnik czy stoper. Tego rodzaju aplikacje charakteryzują się niewielką liczbą funkcji, przejrzystym interfejsem i minimalnym zapotrzebowaniem na zasoby sprzętowe. Dzięki swojej prostocie, aplikacje typu zegar są doskonałym przykładem na to, jak przy użyciu niewielkiej liczby komponentów można stworzyć przydatne narzędzie dla użytkownika.

Pytanie 22

Co to jest choroba związana z wykonywaniem zawodu?

A. Choroba występująca tylko w sektorze przemysłowym
B. Stan zdrowia, który uniemożliwia pracę przez okres krótszy niż tydzień
C. Każda choroba, która występuje w czasie pracy
D. Choroba wynikająca z warunków pracy lub związanych z nimi czynników
Choroba zawodowa to stan zdrowotny spowodowany warunkami pracy lub czynnikami związanymi z wykonywaną profesją. Najczęściej wynika z długotrwałego narażenia na szkodliwe substancje, hałas, promieniowanie, pyły lub wykonywanie powtarzalnych czynności. Przykładem chorób zawodowych są pylica płuc, głuchota zawodowa czy zespół cieśni nadgarstka. Kluczowym elementem w zapobieganiu chorobom zawodowym jest odpowiednia profilaktyka, szkolenia BHP oraz dostosowanie środowiska pracy do zasad ergonomii. Pracodawcy są zobowiązani do monitorowania warunków pracy i wdrażania rozwiązań minimalizujących ryzyko wystąpienia chorób zawodowych.

Pytanie 23

Przedstawione w filmie działania wykorzystują narzędzie

A. generatora kodu java
B. generatora GUI przekształcającego kod do języka XAML
C. kompilatora dla interfejsu graficznego
D. debuggera analizującego wykonujący kod
Wybrana odpowiedź jest trafna, bo faktycznie narzędzie pokazane w filmie to generator GUI, który potrafi przekształcać kod do języka XAML. XAML (czyli Extensible Application Markup Language) jest powszechnie używany do deklaratywnego opisywania interfejsów użytkownika, na przykład w aplikacjach WPF czy UWP na platformie .NET. Jak dla mnie, korzystanie z takich generatorów to ogromna wygoda, bo pozwala błyskawicznie przenosić projekt graficzny do formatu czytelnego dla platformy Microsoftu. Z mojego doświadczenia, wiele zespołów programistycznych stosuje takie rozwiązania, żeby oszczędzić czas na ręcznym pisaniu XAML-a (co potrafi być naprawdę żmudne przy dużych projektach). Co ciekawe, takie narzędzia bardzo dobrze współpracują z designerskimi edytorami UI i potrafią zautomatyzować konwersję nawet z innych formatów graficznych, np. Sketch czy Adobe XD do XAML-a. Branżowe standardy zalecają, by wykorzystywać generatorów GUI właśnie do tego celu, bo minimalizuje to liczbę błędów, przyspiesza wdrożenie zmian i ułatwia współpracę między programistami a projektantami. Warto pamiętać, że XAML jest bardzo elastyczny i umożliwia potem ręczną edycję wygenerowanego kodu – czasem powstają drobne poprawki, ale ogólnie to naprawdę przydatne narzędzie. Ogólnie – jeśli tylko projektujesz UI pod .NET, to automatyczna konwersja do XAML-a to jest coś, co warto znać i wykorzystywać w praktyce.

Pytanie 24

Zaprezentowany fragment kodu w języku C# tworzy hasło. Wskaż zdanie PRAWDZIWE dotyczące charakterystyki tego hasła:

var random = new Random();
string pulaZnakow = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";

int dlPuli = pulaZnakow.Length - 1;
char znak;
string wynik = "";

for(int i = 0; i < 8; i++)  {
    znak = pulaZnakow[random.Next(0, dlPuli)];
    wynik += znak;
}
A. Jest maksymalnie 7-znakowe, co wynika z wartości zmiennej i
B. Może zawierać zarówno małe, jak i wielkie litery, cyfry oraz symbole
C. Ma co najmniej 8 znaków oraz zawiera małe i wielkie litery oraz cyfry
D. Może zawierać małe i wielkie litery oraz cyfry
Analizując podany fragment kodu, widać, że hasło generowane jest losowo z puli znaków, która zawiera małe i wielkie litery alfabetu łacińskiego oraz cyfry od 0 do 9. Nie znajdują się tam żadne znaki specjalne ani symbole, więc hasło nie może ich zawierać – to ważne z praktycznego punktu widzenia, bo często spotyka się wymagania dotyczące obecności symboli w bezpiecznych hasłach. Kod wykorzystuje pętlę for, która wykonuje się dokładnie 8 razy, czyli hasło ma zawsze 8 znaków – ani mniej, ani więcej. Z mojego doświadczenia wynika, że taki sposób generowania haseł jest dość powszechny w prostych aplikacjach, np. przy automatycznym tworzeniu kont użytkowników. Jednak warto pamiętać, że im bardziej zróżnicowana pula znaków, tym lepsze zabezpieczenie – tutaj ograniczamy się tylko do liter i cyfr. Z praktycznego punktu widzenia, takie losowe hasło trudno odgadnąć ręcznie, ale jest dość przewidywalne, jeśli ktoś zna algorytm i nie ma dodatkowych zabezpieczeń (np. cryptographically secure random number generator). W standardach bezpieczeństwa, np. OWASP, zaleca się uwzględnianie symboli i unikanie prostego Random do generowania haseł, bo można go przewidzieć, ale do nauki i zastosowań testowych taki kod jest całkiem w porządku. Hasło więc może zawierać małe i wielkie litery oraz cyfry – dokładnie jak głosi prawidłowa odpowiedź.

Pytanie 25

Który z poniższych języków programowania jest statycznie typowany?

A. JavaScript
B. TypeScript
C. Ruby
D. PHP
TypeScript jest językiem programowania, który został zaprojektowany jako nadzbiór JavaScriptu. Jednym z jego kluczowych wyróżników jest statyczne typowanie, co oznacza, że zmienne, funkcje i obiekty mogą mieć zdefiniowane typy, które są sprawdzane w czasie kompilacji, zanim kod zostanie uruchomiony. Dzięki temu programiści mogą wychwycić wiele typowych błędów, takich jak niezgodność typów, co zwiększa bezpieczeństwo kodu oraz ułatwia jego utrzymanie. TypeScript pozwala na korzystanie z typów prostych, obiektowych, a także umożliwia definiowanie własnych typów, co daje większą elastyczność. Przykładowo, definiując funkcję w TypeScript, można określić typy argumentów oraz typ zwracany, co jest zgodne z najlepszymi praktykami w programowaniu, zachęcając do bardziej strukturalnego podejścia do pisania kodu. W praktyce, projektowanie aplikacji w TypeScript pozwala na łatwiejsze wprowadzanie zmian i refaktoryzację, ponieważ zmiany w typach są automatycznie sprawdzane przez kompilator. Warto również zauważyć, że TypeScript jest szeroko stosowany w dużych projektach, zwłaszcza w kontekście aplikacji frontendowych opartych na frameworkach takich jak Angular czy React, gdzie zarządzanie złożonością kodu jest kluczowe.

Pytanie 26

Jakie narzędzie jest najbardziej odpowiednie do identyfikacji błędów w trakcie działania programu?

A. Kompilator
B. Linker
C. Interpreter
D. Debugger
Debugger to narzędzie przeznaczone do wyszukiwania błędów w czasie wykonywania programu. Pozwala na zatrzymywanie aplikacji w wybranych miejscach, analizowanie wartości zmiennych i śledzenie przepływu sterowania, co umożliwia szybkie wykrywanie błędów logicznych i błędów czasu wykonania. Debugger jest niezbędny w procesie rozwoju oprogramowania, ponieważ pomaga programistom w zrozumieniu, jak ich kod działa w rzeczywistości i jak różne warunki wpływają na jego funkcjonowanie.

Pytanie 27

Co to jest Webpack?

A. System zarządzania bazami danych dla aplikacji Node.js
B. Framework JavaScript do tworzenia aplikacji mobilnych
C. Narzędzie do budowania modułów i zarządzania zależnościami w aplikacjach JavaScript
D. Biblioteka do testowania kodu JavaScript
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 28

Zaprezentowany symbol odnosi się do

Ilustracja do pytania
A. praw autorskich
B. domeny publicznej
C. Creative Commons
D. prawa cytatu
Ten symbol to międzynarodowe oznaczenie domeny publicznej – często nazywany jest też symbolem Public Domain. Moim zdaniem to bardzo przydatna rzecz, bo jednoznacznie komunikuje, że utwór nie jest chroniony prawem autorskim, więc można go swobodnie wykorzystywać bez pytania kogokolwiek o zgodę. To szczególnie ważne, gdy pracujesz nad projektami komercyjnymi albo edukacyjnymi i musisz mieć pewność, że nie naruszasz czyichś praw. W praktyce spotkasz to oznaczenie na stronach z grafikami, muzyką czy tekstami, np. na Wikimedia Commons albo w niektórych bazach zdjęć stockowych – wtedy od razu wiesz, że możesz pobierać, edytować czy publikować materiał na własnych zasadach. Kluczowe jest jednak, żeby nie mylić tego symbolu z licencjami Creative Commons – tam nadal obowiązują konkretne warunki. W branży IT oraz przy pracy twórczej rozpoznawanie takich oznaczeń jest wręcz podstawą dobrych praktyk, bo znacząco minimalizuje ryzyko prawne. Z mojego doświadczenia wynika, że wielu początkujących myli domenę publiczną z wolnymi licencjami – a to nie to samo. Oznaczenie Public Domain jasno pokazuje: nie ma ograniczeń, korzystaj śmiało i nie musisz podawać autora, choć czasami jest to mile widziane z punktu widzenia etyki.

Pytanie 29

Jakie jest podstawowe działanie w ochronie miejsca zdarzenia?

A. Zagwarantowanie stabilności ciała rannego
B. Usunięcie niebezpiecznych przedmiotów z otoczenia
C. Zastosowanie sterylnych materiałów opatrunkowych
D. Zagwarantowanie odpowiedniego oświetlenia
Z mojego doświadczenia, usunięcie niebezpiecznych rzeczy z miejsca, gdzie doszło do wypadku, to naprawdę kluczowa sprawa. Dzięki temu zmniejszamy szanse na dodatkowe obrażenia i możemy lepiej pomóc poszkodowanemu, nie narażając siebie na ryzyko. Na przykład, warto odsunąć ostre narzędzia, wyłączyć działające maszyny czy podnieść ciężkie przedmioty, które mogłyby kogoś zranić. Takie działania są istotne w każdej sytuacji, czy to wypadek na drodze, czy w pracy.

Pytanie 30

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

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

Pytanie 31

Który z poniższych elementów HTML5 służy do rysowania grafiki?

A. &lt;graphic&gt;
B. &lt;canvas&gt;
C. &lt;draw&gt;
D. &lt;svg&gt;
Element HTML5 &lt;canvas&gt; jest kluczowym narzędziem do rysowania grafiki w przeglądarkach internetowych. Umożliwia programistom tworzenie dwuwymiarowych i trójwymiarowych grafik w sposób dynamiczny, wykorzystując JavaScript. Przykładem zastosowania &lt;canvas&gt; jest tworzenie gier, animacji, wizualizacji danych oraz interaktywnych wykresów. Dzięki API dla elementu canvas, programiści mają możliwość rysowania kształtów, linii, tekstu oraz obrazów, co otwiera szerokie możliwości w zakresie projektowania interfejsów użytkownika. Warto również zwrócić uwagę na to, że stosowanie &lt;canvas&gt; zgodnie z najlepszymi praktykami programistycznymi, takimi jak efektywne zarządzanie pamięcią i optymalizacja renderowania, pozwala na osiąganie płynnych animacji i wysokiej jakości grafik. Co więcej, &lt;canvas&gt; jest wspierany przez wszystkie nowoczesne przeglądarki, co zapewnia dużą zgodność i dostępność.

Pytanie 32

Jakie aspekty powinny być brane pod uwagę przy tworzeniu zestawów danych?

A. Typ zastosowanego kompilatora
B. Metoda alokacji pamięci dla danych
C. Narzędzia do analizy błędów
D. Ilość linii kodu programu
Sposób alokacji pamięci dla danych to kluczowy element projektowania zestawów danych, ponieważ wpływa na wydajność i efektywność programu. Dynamiczna alokacja pamięci pozwala na tworzenie struktur, których rozmiar jest zmienny i dostosowuje się w trakcie działania aplikacji. Dzięki temu programiści mogą optymalnie zarządzać zasobami systemowymi, unikając marnowania pamięci lub jej niedoboru. Wybór odpowiedniej metody alokacji, np. stosowanie wskaźników, dynamicznych tablic lub struktur danych takich jak lista czy mapa, pozwala na budowanie bardziej skalowalnych i elastycznych aplikacji.

Pytanie 33

Algorytmu Euklidesa, przedstawionego na schemacie, należy użyć do obliczenia.

Ilustracja do pytania
A. Najmniejszej Wspólnej Wielokrotności
B. największego elementu w zbiorze liczb
C. najmniejszej liczby pierwszej w danym zakresie
D. Największego Wspólnego Dzielnika
Algorytm Euklidesa to klasyczna metoda stosowana do wyznaczania największego wspólnego dzielnika (NWD) dwóch liczb całkowitych. Działa na zasadzie iteracyjnego odejmowania mniejszej liczby od większej aż do momentu, gdy obie liczby staną się równe. Wtedy ta wspólna wartość jest największym wspólnym dzielnikiem. Algorytm jest bardzo efektywny, nawet dla dużych liczb, co czyni go powszechnie stosowanym w praktycznych zastosowaniach, takich jak kryptografia czy optymalizacja komputerowa. W kryptografii, szczególnie w systemach kluczy publicznych, takich jak RSA, obliczanie NWD jest kluczowe dla generowania kluczy. Algorytm Euklidesa jest też podstawą dla bardziej zaawansowanych algorytmów, takich jak rozszerzony algorytm Euklidesa, który umożliwia obliczenie również współczynników liczbowych używanych w teoretycznych dowodach matematycznych. Jego implemetacja jest również często wykorzystywana w bibliotekach matematycznych języków programowania, co świadczy o jego uniwersalności i znaczeniu w dzisiejszej technologii.

Pytanie 34

W klasie o nazwie samochod przypisano atrybuty: marka, rocznik, parametry[]. Atrybuty te powinny zostać zdefiniowane jako

A. funkcje
B. pola
C. metody
D. interfejsy
Pola w klasie samochod to właśnie te elementy, które przechowują dane, takie jak marka, rocznik czy tablica parametry. To jest absolutna podstawa programowania obiektowego – najczęściej spotyka się to w językach takich jak Java, C# albo nawet w Pythonie, choć tam często nazywamy je po prostu atrybutami. Dla przykładu, jeśli tworzysz klasę Samochod w C#, to pole 'marka' będzie np. typu string, 'rocznik' – int, a 'parametry' możesz zadeklarować jako tablicę albo listę (List<T>) zależnie od potrzeb. Przechowywanie danych w polach pozwala na lepszą organizację, bo każda instancja klasy ma swoje własne wartości tych pól. Tak się właśnie tworzy modele danych, na których potem operuje cała aplikacja – czy to baza samochodów w warsztacie, czy system ubezpieczeń komunikacyjnych. Takie podejście jest zgodne z zasadami hermetyzacji i solidnych, nowoczesnych standardów pisania kodu. Dużo profesjonalnych frameworków i narzędzi (np. Entity Framework, Hibernate) korzysta z takiego podejścia, nawet jeśli potem te pola opakowujesz w właściwości (properties). Krótko mówiąc, pola to nieodłączny element każdej klasy, która coś reprezentuje, i moim zdaniem nie da się dobrze projektować kodu obiektowego bez zrozumienia tej konwencji.

Pytanie 35

Jaki będzie wynik działania poniższego kodu w języku Python?

def fun(x, l=[]):
    l.append(x)
    return l

print(fun(1))
print(fun(2))
print(fun(3, []))
print(fun(4))
A. [1], [1, 2], [3], [3, 4]
B. [1], [2], [3], [4]
C. [1], [2], [3], [4, 3]
D. [1], [1, 2], [3], [1, 2, 4]
Wynik działania tego kodu jest poprawny i wynika z zrozumienia, jak Python obsługuje domyślne argumenty funkcji. W momencie, gdy funkcja 'fun' jest wywoływana po raz pierwszy z argumentem 1, lista 'l' jest pusta i dodawany jest do niej element 1, co skutkuje wynikiem [1]. Przy kolejnym wywołaniu z argumentem 2, lista 'l' nie jest tworzona na nowo, a zamiast tego używane jest to samo odniesienie do istniejącej listy, co oznacza, że 2 zostaje dodane do listy, przekształcając ją w [1, 2]. W trzecim wywołaniu funkcji, przekazujemy nową, pustą listę, więc wynik to [3]. Kiedy po raz czwarty wywołujemy funkcję z argumentem 4, znowu używamy tej samej listy, do której dodano już 1 i 2, co daje nam wynik [1, 2, 4]. Kluczowe jest zrozumienie, że domyślne argumenty w Pythonie są tworzone raz, więc nie są resetowane przy kolejnych wywołaniach funkcji. Takie zarządzanie pamięcią w Pythonie jest zgodne z dobrymi praktykami programistycznymi oraz pozwala na efektywne użycie zasobów.

Pytanie 36

Czym jest klasa w programowaniu obiektowym?

A. instrukcja
B. zmienna
C. typ danych
D. wskaźnik
Klasa w programowaniu obiektowym to w praktyce taki szablon, według którego tworzymy konkretne obiekty. To coś jak przepis, dzięki któremu programista może zdefiniować własny, złożony typ danych, opisujący realny byt czy problem. Klasa określa, jakie dane (pola, właściwości) oraz zachowania (metody, funkcje) mają mieć obiekty, które potem powstaną na jej podstawie. Programując w językach takich jak Java, C++ czy Python, właśnie klasy pozwalają nam zamknąć logikę i dane w jednym opakowaniu – to jest jeden z filarów OOP (programowania obiektowego). Moim zdaniem nie da się robić sensownych, skalowalnych projektów bez klas, bo to one pozwalają sensownie ogarnąć złożoność. Przykład? W aplikacji bankowej klasa KontoBankowe może mieć pola typu saldo, numer konta i metody do przelewów. Każde nowe konto to osobny obiekt tego typu, ale wszystkie zachowują się spójnie. Warto przy tym pamiętać, że dobra praktyka nakazuje projektować klasy tak, żeby były jak najbardziej uniwersalne, czyli zgodnie z zasadą DRY (Don’t Repeat Yourself) i SOLID. Często spotykam się z opinią, że klasa to „sztywny typ danych”, ale to nieprawda – dzięki dziedziczeniu czy polimorfizmowi można je elastycznie rozszerzać. Podsumowując, klasa to własny, często złożony typ danych stworzony specjalnie pod potrzeby danej aplikacji – i właśnie za to tak się je ceni.

Pytanie 37

Co to jest SPA (Single Page Application)?

A. Aplikacja webowa działająca na jednej stronie, dynamicznie aktualizująca treść bez przeładowywania całej strony
B. Metoda projektowania interfejsu użytkownika dla aplikacji mobilnych
C. Technika optymalizacji kodu w aplikacjach JavaScript
D. Format pliku używany w aplikacjach do przetwarzania danych
Single Page Application (SPA) to typ aplikacji internetowej, która działa na jednej stronie, umożliwiając dynamiczne ładowanie treści bez konieczności przeładowania całej witryny. W tradycyjnych aplikacjach webowych, każda interakcja użytkownika, która wymagała zmiany treści, wiązała się z odświeżeniem strony. W przypadku SPA, korzysta się z technologii takich jak AJAX, WebSockets czy API, co pozwala na asynchroniczne pobieranie danych z serwera. Przykłady SPA to popularne frameworki i biblioteki, takie jak React, Angular czy Vue.js. Dzięki tym technologiom, użytkownicy mogą doświadczyć płynniejszego i bardziej responsywnego interfejsu. Dobrą praktyką w projektowaniu SPA jest stosowanie wzorców projektowych, takich jak MVC (Model-View-Controller), co ułatwia zarządzanie kodem oraz jego modułowość. SPA są szczególnie przydatne w aplikacjach wymagających intensywnej interakcji, takich jak platformy e-commerce czy aplikacje społecznościowe, gdzie kluczowa jest szybkość i komfort użytkowania.

Pytanie 38

Kiedy w programie występuje problem z działaniem, a programista musi zweryfikować wartości znajdujące się w zmiennych w momencie działania aplikacji, to w tym celu należy zastosować

A. debugger
B. analizator składni
C. wirtualną maszynę
D. interpreter
Debugger to jedno z podstawowych narzędzi, bez którego praktycznie żaden programista nie wyobraża sobie efektywnej pracy przy diagnozowaniu usterek w kodzie. Pozwala on na zatrzymanie wykonania programu w wybranym miejscu (tzw. breakpoint), podgląd wartości zmiennych, śledzenie stosu wywołań i krokowe przechodzenie przez kod. Praca z debuggerem znacznie skraca czas poszukiwania przyczyn błędów, pozwalając od razu zobaczyć, co dokładnie dzieje się „pod maską” aplikacji w konkretnym momencie jej działania. W mojej opinii – i myślę, że większość osób z branży się tu zgodzi – opanowanie obsługi debuggera to absolutna podstawa, jeśli ktoś myśli poważnie o programowaniu. Narzędzia te są dostępne w praktycznie każdym środowisku IDE, zarówno do języków kompilowanych jak i interpretowanych. Można dzięki nim sprawdzać nawet bardzo złożone przypadki, które trudno byłoby wychwycić samym czytaniem kodu albo przez dodawanie tymczasowych printów. Debugger umożliwia też dynamiczne modyfikowanie wartości w trakcie działania programu, co czasem bardzo się przydaje przy testowaniu różnych scenariuszy. Branżowe dobre praktyki wręcz zalecają regularne wykorzystywanie debuggera podczas pracy z większymi projektami, bo to po prostu ogromna oszczędność czasu i nerwów.

Pytanie 39

Która zasada zwiększa bezpieczeństwo w sieci?

A. Dzielnie się hasłami z przyjaciółmi
B. Pobieranie plików z niepewnych źródeł
C. Korzystanie z mocnych, unikalnych haseł
D. Zaniedbywanie aktualizacji systemu operacyjnego
Używanie silnych, unikalnych haseł jest fundamentalną zasadą poprawiającą bezpieczeństwo w sieci. Silne hasło to takie, które składa się z co najmniej 12 znaków, zawiera wielkie i małe litery, cyfry oraz znaki specjalne. Takie hasła są trudne do złamania przez ataki brute force, które wykorzystują algorytmy do próbowania różnych kombinacji znaków. Przykładem silnego hasła może być 'P@ssw0rd!2023', które łączy różnorodne typy znaków. Używanie unikalnych haseł dla różnych kont jest równie ważne, ponieważ w przypadku naruszenia bezpieczeństwa jednego konta, inne pozostają zabezpieczone. Standardy takie jak NIST (National Institute of Standards and Technology) zalecają tworzenie haseł w sposób, który ogranicza ich przewidywalność. Narzędzia do zarządzania hasłami, takie jak LastPass czy 1Password, mogą pomóc w generowaniu i przechowywaniu silnych haseł, co dodatkowo redukuje ryzyko. Stosowanie tej zasady jest kluczowe w kontekście ochrony danych osobowych oraz zapobiegania kradzieży tożsamości.

Pytanie 40

Oznaczenie ochrony przeciwpożarowej przedstawione na symbolu wskazuje na

Ilustracja do pytania
A. rozdzielnię elektryczną
B. przełącznik zasilania
C. system alarmowy przeciwpożarowy
D. punkt remote release
Ten symbol jednoznacznie wskazuje na ręczny ostrzegacz pożarowy, będący kluczowym elementem systemu alarmowego przeciwpożarowego. W praktyce taki przycisk znajdziesz w korytarzach szkół, biur czy dużych hal, zwykle przy wyjściach ewakuacyjnych. Po naciśnięciu wywołuje on alarm w całym obiekcie, pozwalając na szybką reakcję służb oraz ewakuację osób znajdujących się w strefie zagrożenia. Moim zdaniem zrozumienie działania i lokalizacji ręcznych ostrzegaczy jest absolutnie fundamentalne dla bezpieczeństwa pożarowego każdego budynku. Zgodnie z normą PN-EN 54-11 oraz wytycznymi Państwowej Straży Pożarnej, oznaczenie to musi być dobrze widoczne, z wyraźną, czerwoną barwą tła i prostym, czytelnym symbolem. Praktyka pokazuje, że w sytuacjach krytycznych ludzie dużo szybciej reagują na jednoznaczne oznaczenia graficzne niż na same napisy. Właśnie dlatego tak bardzo przykłada się wagę do poprawnej widoczności i rozmieszczenia tych znaków. Sam system alarmowy przeciwpożarowy, którego częścią są takie przyciski, jest podstawą nie tylko ochrony ludzi, ale też minimalizowania strat materialnych, bo pozwala na natychmiastowe powiadomienie odpowiednich służb. Warto zapamiętać, że ręczne ostrzegacze są regularnie testowane podczas przeglądów PPOŻ i ich prawidłowe oznakowanie to wymóg prawny oraz element dobrej praktyki branżowej.