Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 13 maja 2026 17:05
  • Data zakończenia: 13 maja 2026 17:25

Egzamin zdany!

Wynik: 28/40 punktów (70,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

Co to jest IndexedDB?

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

Pytanie 2

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 są realizowane tylko przez końcowych użytkowników, natomiast niefunkcjonalne przez programistów
C. Testy funkcjonalne koncentrują się na interfejsie, a niefunkcjonalne na backendzie aplikacji
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 3

Co to jest wzorzec projektowy Singleton?

A. Wzorzec zapewniający istnienie tylko jednej instancji klasy w całej aplikacji
B. Wzorzec do zarządzania komunikacją między komponentami aplikacji
C. Technika optymalizacji kodu poprzez minimalizację liczby obiektów
D. Metoda zabezpieczania aplikacji przed atakami typu SQL Injection
Wzorzec projektowy Singleton to jeden z fundamentalnych wzorców, który zapewnia, że w trakcie działania aplikacji istnieje tylko jedna instancja danej klasy. Przydaje się to w sytuacjach, gdy musimy zarządzać zasobami, które nie powinny być wielokrotnie instancjonowane, na przykład połączenia z bazą danych czy logika globalnych ustawień. Implementacja tego wzorca zakłada zastosowanie prywatnego konstruktora oraz metody statycznej, która odpowiada za utworzenie instancji. Przykładem zastosowania Singletona mogą być klasy zarządzające konfiguracją aplikacji, gdzie zmiana w jednym miejscu może wpłynąć na cały system. Często jest on krytykowany za to, że wprowadza globalny stan, co może prowadzić do trudności w testowaniu i zarządzaniu stanem aplikacji. Dlatego ważne jest, aby stosować go świadomie i tam, gdzie rzeczywiście przynosi korzyści, zgodnie z najlepszymi praktykami inżynieryjnymi.

Pytanie 4

Co to jest Continuous Integration (CI)?

A. Metoda ciągłego monitorowania wydajności aplikacji w produkcji
B. Praktyka automatycznego integrowania kodu w repozytorium wspólnym wraz z testami
C. Technika tworzenia aplikacji mobilnych w sposób przyrostowy
D. Protokół komunikacji między różnymi częściami aplikacji
Continuous Integration (CI) to praktyka, która ma na celu automatyzację procesu integrowania kodu w repozytorium wspólnym. Główną ideą CI jest to, aby programiści regularnie dodawali swoje zmiany do głównej gałęzi kodu, co pozwala na bieżące testowanie aplikacji. Dzięki temu można szybko wykrywać i naprawiać błędy, zanim staną się one poważnym problemem. Typowym przykładem zastosowania CI jest użycie narzędzi takich jak Jenkins, GitLab CI czy Travis CI, które automatycznie uruchamiają zestaw testów po każdym wprowadzeniu zmian. Takie podejście nie tylko poprawia jakość kodu, ale również przyspiesza cykl wydania oprogramowania, co jest zgodne z najlepszymi praktykami w branży. Warto również zauważyć, że CI jest często częścią szerszego podejścia do DevOps, które integruje rozwój i operacje, aby zwiększyć efektywność całego procesu wytwarzania oprogramowania.

Pytanie 5

Który z wymienionych poniżej przykładów ilustruje użycie systemu informatycznego w działalności gospodarczej?

A. System wentylacji
B. E-sklep
C. System nawigacji GPS
D. System sterowania ruchem miejskim
System wentylacji, mimo że jest istotnym elementem infrastruktury budynków, nie jest przykładem systemu informatycznego w kontekście działalności biznesowej. Wentylacja jest technologią mechaniczną, która ma na celu zapewnienie odpowiedniej jakości powietrza. Nie posiada zaawansowanych funkcji informatycznych, które mogłyby wspierać procesy biznesowe, jak np. zarządzanie danymi klientów czy automatyzacja sprzedaży. Systemy wentylacyjne są zaprojektowane głównie w celu poprawy komfortu użytkowników, a nie w celu generowania wartości dodanej dla przedsiębiorstwa poprzez informatyzację procesów. W przypadku systemu sterowania ruchem miejskim, jego głównym celem jest zarządzanie ruchem drogowym i zwiększenie efektywności transportu publicznego. Jest to również system technologiczny, jednak jego głównym zastosowaniem jest poprawa bezpieczeństwa i komfortu podróży, a nie wspieranie operacji biznesowych. Tego typu systemy, choć korzystają z technologii informatycznych, nie są bezpośrednio związane z procesami komercyjnymi ani z generowaniem przychodu. Z kolei system nawigacji GPS, choć istotny w kontekście transportu i logistyki, działa jako narzędzie wspierające nawigację i lokalizację, a nie jako integralna część systemu informatycznego w działalności przedsiębiorstw. Jego zastosowania w biznesie są zazwyczaj pośrednie i nie mają na celu bezpośredniego wsparcia dla funkcji komercyjnych, lecz przede wszystkim służą do optymalizacji tras dostaw czy lokalizacji klientów.

Pytanie 6

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

A. 11101
B. 10101
C. 10001
D. 11001
Dodawanie binarne to podstawowa operacja w systemie liczbowym, który używa tylko dwóch cyfr: 0 i 1. W przypadku dodawania liczb binarnych, proces ten przypomina dodawanie w systemie dziesiętnym, jednak z pewnymi różnicami ze względu na ograniczony zestaw cyfr. Gdy dodajemy liczby 1011 i 110, należy ustawić je w kolumnach, podobnie jak w dodawaniu dziesiętnym. Zaczynamy od najmniej znaczącej cyfry. W pierwszej kolumnie mamy 1 + 0, co daje 1. W drugiej kolumnie mamy 1 + 1, co daje 0, ale musimy przenieść 1 do następnej kolumny (przeniesienie jest kluczowym elementem w dodawaniu binarnym). W trzeciej kolumnie dodajemy 1 (przeniesienie) + 0 + 1, co daje 0 i przenosimy 1 do następnej kolumny. W czwartej kolumnie dodajemy przeniesienie 1 + 1 (z liczby 1011), co daje 10 w systemie binarnym, co oznacza 0 i przeniesienie 1. Końcowym wynikiem dodawania daje 10001 w systemie binarnym. To podejście jest zgodne z zasadami arytmetyki binarnej, które są fundamentem działania komputerów i systemów cyfrowych, w których operacje na danych są realizowane w systemie binarnym.

Pytanie 7

Jakie znaczenie ma krajowa normalizacja dla produktów i usług?

A. Usuwa konieczność przeprowadzania kontroli jakości
B. Restrukcjonuje innowacje technologiczne
C. Gwarantuje lepszą zgodność oraz jakość
D. Ogranicza liczbę dostępnych towarów
Wielu ludzi myśli, że normalizacja zmniejsza liczbę dostępnych produktów, ale to nie tak. W rzeczywistości standardy sprawiają, że pojawia się jeszcze więcej różnych produktów, które spełniają określone normy. A ten pomysł, że pozbywanie się kontroli jakości to coś dobrego, to chyba jakieś nieporozumienie – normalizacja wcale nie zastępuje kontroli jakości, ona ją raczej wspiera. I nie ma co mówić, że innowacji technologicznych jest mniej przez normalizację – wręcz przeciwnie, standardy dają solidny podstawy do tego, żeby rozwijać nowe technologie i produkty, które odpowiadają potrzebom rynku.

Pytanie 8

Jaką właściwość ma sieć synchroniczna?

A. Przekazywanie danych zachodzi w sposób niesystematyczny
B. Nie jest konieczna synchronizacja zegarów
C. Transmisja danych odbywa się w wyznaczonych interwałach czasowych
D. Gwarantuje większą elastyczność w przesyłaniu danych
Sieć synchroniczna charakteryzuje się tym, że transmisja danych odbywa się w ustalonych odstępach czasu, co oznacza, że wszystkie urządzenia w sieci są zsynchronizowane do jednego zegara. Taki sposób przesyłania danych pozwala na precyzyjne określenie momentu, w którym dane są wysyłane i odbierane, co redukuje opóźnienia i błędy w komunikacji. Przykładem sieci synchronicznej jest system TDM (Time Division Multiplexing), który dzieli czas na różne sloty, przydzielając każdy slot konkretnemu użytkownikowi lub urządzeniu. Dzięki temu każdy uczestnik sieci ma gwarancję, że w swoim czasie dostanie dostęp do medium transmisyjnego. Standardy takie jak SONET (Synchronous Optical Network) i SDH (Synchronous Digital Hierarchy) są przykładami technologii, które wykorzystują synchronizację do efektywnego przesyłania danych na dużych odległościach. Takie podejście jest powszechnie stosowane w telekomunikacji, gdzie wysoka wydajność i niezawodność transmisji są kluczowe dla jakości usług.

Pytanie 9

Co to jest automatyzacja testowania procesów?

A. Integracją testów w środowisku deweloperskim
B. Używaniem narzędzi oraz skryptów do wykonywania testów w sposób automatyczny bez udziału człowieka
C. Sprawdzaniem poprawności działania aplikacji na urządzeniach przenośnych
D. Kompilowaniem kodu w celu zwiększenia efektywności
Automatyzacja procesu testowania to zastosowanie narzędzi, skryptów i technologii do przeprowadzania testów oprogramowania w sposób zautomatyzowany, bez konieczności ciągłej ingerencji człowieka. Automatyzacja pozwala na szybkie i wielokrotne uruchamianie testów regresyjnych, co znacząco zwiększa efektywność testowania, redukuje czas potrzebny na wykrycie błędów i umożliwia jednoczesne testowanie wielu funkcji. Narzędzia takie jak Selenium, JUnit czy TestNG pozwalają na tworzenie skryptów testowych, które automatycznie weryfikują poprawność działania aplikacji na różnych urządzeniach i w różnych środowiskach. Automatyzacja testów to nie tylko oszczędność czasu, ale także wyższa dokładność i powtarzalność testów, co minimalizuje ryzyko przeoczenia krytycznych błędów.

Pytanie 10

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

A. API REST
B. Routing
C. Strona HTML
D. Przycisk (Button)
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

Kompilator może wygenerować błąd "incompatible types", gdy

A. funkcja oczekuje całkowitej jako argumentu, a została wywołana z napisem jako parametrem
B. funkcja zwraca typ void, a w momencie wywołania nie jest przypisana do żadnej zmiennej
C. do zmiennej typu int przypisano wartość 243
D. w trakcie deklaracji zmiennej wystąpił błąd, zastosowano nieistniejący typ
Błąd 'incompatible types' to dość powszechny problem, kiedy przypisujesz coś do zmiennej, ale typ się nie zgadza. Na przykład, jeśli próbujesz wstawić tekst do miejsca, gdzie oczekiwana jest liczba całkowita, to właśnie wtedy pojawia się ten błąd. W językach jak Java, gdzie typy są mocno zdefiniowane, musisz uważać na takie rzeczy.

Pytanie 12

Przedstawiony na filmie kod napisany w języku C++ nie kompiluje się. Co należy zmienić w tym kodzie, aby proces kompilacji wykonał się bez błędów?

A. poprawnie zapisać warunek w instrukcji if w linii 11, np. sprawdz(x)==true
B. dodać deklarację funkcji sprawdz przed funkcją main
C. zadeklarować zmienną sprawdz przed jej wykorzystaniem w linii 11
D. naprawić błąd w funkcji sprawdz, który polega na braku nawiasów {} w pętli for
Wielu początkujących programistów skupia się na szczegółach składniowych lub drobiazgach logicznych, kiedy pojawia się błąd kompilacji w C++. Jednak często przyczyną jest coś bardzo podstawowego, jak brak deklaracji funkcji przed jej użyciem. Jeśli chodzi o zapis warunku w instrukcji 'if', to kompilator nie zgłasza błędu, gdy używamy wyrażenia typu 'if (sprawdz(x))' – to całkowicie poprawna składnia, a dopisywanie '==true' jest redundantne i nie wnosi niczego nowego. Bardzo często widzę, że ktoś skupia się na tym, żeby warunek koniecznie porównywać do true, ale tak naprawdę to kwestia stylu, nie poprawności. Pozostawienie nawiasów klamrowych w pętli for jest oczywiście dobrą praktyką, ale ich brak nie zawsze generuje błąd kompilacji, jeśli pętla ma tylko jedną instrukcję. Kompilator C++ potrafi to rozpoznać i nie zgłasza błędu – sprowadza się to bardziej do czytelności i unikania błędów logicznych niż do samej poprawności kompilacji. Odpowiedź dotycząca deklarowania zmiennej 'sprawdz' to już nieporozumienie – 'sprawdz' to funkcja, a nie zmienna, więc nie deklarujemy jej w ten sposób. Ten błąd pokazuje, jak łatwo pomylić pojęcia w językach programowania, zwłaszcza jeśli dopiero zaczynamy przygodę z kodowaniem. Główna zasada, którą warto tu zapamiętać, to: każda funkcja używana przed jej zdefiniowaniem musi być zadeklarowana – to właśnie tego brakuje w typowym przykładzie z pytania. Bez deklaracji kompilator nie wie, jaką sygnaturę ma funkcja, a to skutkuje błędem już na poziomie kompilacji. Z mojego doświadczenia wynika, że takie drobne rzeczy potrafią skutecznie utrudnić życie, dlatego warto czytać komunikaty kompilatora i znać podstawowe zasady działania języka C++.

Pytanie 13

Co to jest PWA (Progressive Web App)?

A. Biblioteka graficzna do tworzenia animacji
B. Framework do tworzenia aplikacji mobilnych
C. System zarządzania treścią dla stron internetowych
D. Aplikacja webowa działająca jak natywna aplikacja mobilna
Progressive Web App (PWA) to aplikacja webowa, która łączy cechy stron internetowych i natywnych aplikacji mobilnych, oferując użytkownikom lepsze doświadczenia dzięki technologii webowej. PWA wykorzystują zaawansowane funkcje przeglądarek, takie jak Service Workers, aby zapewnić offline'ową funkcjonalność, powiadomienia push i lepsze zarządzanie pamięcią podręczną. Dzięki temu użytkownicy mogą korzystać z aplikacji niezależnie od jakości połączenia internetowego. Przykłady PWA obejmują aplikacje takie jak Twitter Lite, które umożliwiają użytkownikom przeglądanie treści nawet przy słabym sygnale sieciowym, a także Facebook Lite, który jest zoptymalizowany pod kątem urządzeń o ograniczonych zasobach. Warto również wspomnieć o zastosowaniach PWA w e-commerce, gdzie użytkownicy mogą szybko dodawać produkty do koszyka i dokonywać zakupów bez konieczności ładowania pełnej aplikacji mobilnej. Te właściwości sprawiają, że PWA są zgodne z najlepszymi praktykami branżowymi, zapewniając użytkownikom dostęp do funkcji, które wcześniej były zarezerwowane tylko dla natywnych aplikacji.

Pytanie 14

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:

sortowanie bąbelkoweO(n²)
sortowanie przez wstawianieO(n²)
sortowanie przez scalanieO(n log n)
sortowanie przez zliczanieO(n)
sortowanie kubełkoweO(n²)
A. kubełkowego
B. przez scalanie
C. przez zliczanie
D. bąbelkowego
Sortowanie bąbelkowe jest jednym z najwolniejszych algorytmów i rzadko jest używane w praktyce ze względu na złożoność O(n^2). Sortowanie kubełkowe może być szybkie, ale jego efektywność zależy od równomiernego rozkładu danych. Sortowanie przez scalanie jest bardziej uniwersalne, ale ma większą złożoność obliczeniową niż Counting Sort i może być mniej efektywne dla dużych zbiorów danych o ograniczonym zakresie.

Pytanie 15

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

A. .changeClass()
B. .toggleClass()
C. .switchClass()
D. .bingClass()
Wybrałeś .toggleClass() i to jest strzał w dziesiątkę pod względem praktycznego stosowania jQuery. Funkcja .toggleClass() dokładnie odpowiada na potrzebę dynamicznej zmiany wyglądu elementu — pozwala jednym wywołaniem dodać klasę, jeśli jej nie ma, albo usunąć, jeśli już istnieje. To niesamowicie przydatne, zwłaszcza przy tworzeniu efektów interaktywnych, takich jak menu rozwijane, animacje kliknięcia, czy zmiany stanów przycisków. W praktyce wygląda to często tak: $('div').toggleClass('active'), gdzie po każdym kliknięciu div otrzymuje lub traci klasę 'active'. Warto zauważyć, że .toggleClass() obsługuje też opcjonalny drugi argument typu boolean, więc możesz wymusić dodanie lub usunięcie klasy zależnie od logiki — to takie jQuery’owe „sprytne przełączanie”. Z mojego doświadczenia, ta metoda jest zdecydowanie jednym z fundamentów, kiedy chodzi o szybkie prototypowanie i pisanie kodu front-endowego zgodnego z zasadami DRY (Don’t Repeat Yourself). Dobrą praktyką jest też, żeby nie nadużywać tej funkcji do zbyt skomplikowanych operacji, bo wtedy łatwo się pogubić w logice klas CSS. No i jak patrzę na projekty w branży, to .toggleClass() jest stosowane praktycznie wszędzie tam, gdzie chodzi o responsywną zmianę interfejsu klienta bez potrzeby pisania rozbudowanego JavaScriptu.

Pytanie 16

W jakim przypadku należy umieścić poszkodowanego w pozycji bocznej bezpiecznej?

A. gdy wystąpi omdlenie i brak tętna
B. w przypadku urazu kręgosłupa
C. w przypadku omdlenia, gdy osoba jest przytomna
D. w sytuacji urazu pleców, gdy osoba jest świadoma
Ułożenie poszkodowanego w pozycji bocznej bezpiecznej jest kluczowym krokiem w sytuacjach medycznych, zwłaszcza w przypadku omdlenia, gdy osoba jest przytomna i oddycha. Ta pozycja ma na celu zapewnienie drożności dróg oddechowych, co jest niezbędne, aby uniknąć zadławienia się własnymi wymiotami lub śliną. W sytuacji, gdy osoba traci przytomność, lecz nadal oddycha, ułożenie jej na boku minimalizuje ryzyko aspiracji i wspiera naturalne funkcje oddechowe. Ważne jest, aby przyjąć tę pozycję, ale również monitorować stan poszkodowanego, sprawdzając jego oddech i reakcje. Zgodnie z wytycznymi Europejskiej Rady Resuscytacji, w takich sytuacjach kluczowe jest, aby osoba była w pełni zabezpieczona i nie mogła się przewrócić. Przykłady zastosowania tej techniki obejmują sytuacje, gdzie osoba straciła przytomność na skutek omdlenia związanego z nagłym spadkiem ciśnienia krwi lub innymi czynnikami. Wykorzystanie pozycji bocznej bezpiecznej jest standardem w pierwszej pomocy i jest szkolone w ramach kursów dla ratowników oraz medyków.

Pytanie 17

Co to jest API w kontekście programowania?

A. Interfejs programistyczny aplikacji, który definiuje sposób komunikacji między różnymi komponentami oprogramowania
B. System zarządzania relacyjnymi bazami danych
C. Metoda kompresji danych w aplikacjach webowych
D. Narzędzie do testowania interfejsu użytkownika aplikacji
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 18

W przedstawionych funkcjonalnie równoważnych kodach źródłowych po przeprowadzeniu operacji w zmiennej b zostanie zapisany wynik:

Python:C++/C#/Java:
x = 5.96;
b = int(x);
double x = 5.96;
int b = (int)x;
A. 5
B. 6
C. 596
D. 5.96
Odpowiedź 5 jest prawidłowa, bo w większości popularnych języków programowania, takich jak Python, C++, C#, czy Java, rzutowanie liczby zmiennoprzecinkowej (czyli typu float lub double) na typ całkowity (int) powoduje odcięcie części ułamkowej, a nie zaokrąglenie. To jest bardzo ważne, bo wiele osób intuicyjnie spodziewa się zaokrąglenia, a tu po prostu wszystko po przecinku ląduje w koszu. W przypadku podanego przykładu zmienna x ma wartość 5.96, ale po rzutowaniu na int, zarówno w Pythonie poprzez funkcję int(), jak i w pozostałych językach przez klasyczne rzutowanie (int)x, zostaje tylko 5. Dokładnie tak działa konwersja: odcina się część po przecinku niezależnie od tego, jak blisko liczba jest kolejnej całości. To niesamowicie przydatne np. podczas pracy z indeksami tablic albo gdy chcemy szybko zamienić wynik dzielenia na liczbę całkowitą. W praktyce, warto pamiętać, że takie rzutowanie nie wykonuje żadnej walidacji ani sprawdzania – jeśli liczba jest ujemna, to po prostu też odcina część ułamkową w kierunku zera, więc int(-5.96) da -5. Z mojego doświadczenia bardzo często spotyka się błąd w kodzie, kiedy ktoś oczekuje zaokrąglenia i nie otrzymuje go, bo rzutowanie zawsze odcina, nie zaokrągla. Warto znać tę różnicę przy projektowaniu algorytmów i korzystać np. z funkcji round() jeśli potrzebujemy zaokrąglenia, a nie odcinania. To takie małe niuanse, ale potem wchodzą w nawyk i bardzo ułatwiają życie podczas kodowania.

Pytanie 19

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

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

Pytanie 20

Jak określa się proces transferu danych z lokalnego komputera na serwer?

A. Pobieranie danych
B. Wysyłanie danych
C. Streaming
D. Przesyłanie danych
Pojęcia takie jak pobieranie danych, przesyłanie danych oraz streaming są często mylone z wysyłaniem danych, jednak każde z nich ma swoją unikalną definicję i zastosowanie. Pobieranie danych odnosi się do procesu ściągania informacji z serwera na komputer lokalny. Jest to operacja odwrotna do wysyłania danych i jest kluczowa dla użytkowników, którzy chcą uzyskać dostęp do plików lub zasobów umieszczonych na serwerze. Przykładowo, podczas przeglądania internetu, przeglądarka pobiera dane z serwerów, aby wyświetlić stronę użytkownikowi. Przesyłanie danych, z kolei, to termin ogólny, który można wykorzystać do opisania dowolnej wymiany informacji między lokalnym a zdalnym systemem. Obejmuje zarówno wysyłanie, jak i pobieranie danych, co sprawia, że użycie go w kontekście konkretnej operacji może być mylące. Wreszcie, streaming odnosi się do strumieniowego przesyłania danych, które umożliwia użytkownikom nieprzerwaną transmisję multimediów, takich jak filmy czy muzyka, w czasie rzeczywistym. W tym przypadku, dane są przesyłane w małych partiach, co pozwala na ich natychmiastowe odtwarzanie, a nie przechowywanie lokalnie. W związku z tym, choć wszystkie te procesy dotyczą transferu danych, to tylko wysyłanie danych odnosi się do przesyłania informacji z komputera lokalnego na serwer.

Pytanie 21

Teoria wyznaczania celów definiuje właściwie sformułowany cel jako SMART, od pierwszych liter słów: specyficzny, Mierzalny, Ambitny, Realny oraz Terminowy. Wskaź, który cel wymaga wysiłku i stanowi wyzwanie dla pracownika?

A. Mierzalny
B. Specyficzny
C. Terminowy
D. Ambitny
Odpowiedź „Ambitny” rzeczywiście najlepiej oddaje ideę celu, który wymaga wysiłku i jest wyzwaniem dla pracownika. Moim zdaniem właśnie to kryterium - bycie ambitnym - odgrywa kluczową rolę w motywowaniu zespołu do podnoszenia swoich umiejętności i przekraczania codziennych ograniczeń. Praktyka pokazuje, że wyznaczanie ambitnych celów, choć może się wydawać nieco ryzykowne, rozwija kreatywność i pozwala wychodzić poza strefę komfortu. Branżowe standardy zarządzania projektami (np. PMI czy PRINCE2) mocno podkreślają wagę ambitnych, ale jednocześnie realistycznych celów – taki balans sprawia, że pracownicy nie popadają w rutynę i są zmotywowani do długotrwałego rozwoju. W codziennych realiach np. produkcyjnych, cel ambitny może oznaczać zwiększenie wydajności o 20% w pół roku, a nie tylko utrzymanie obecnego poziomu. Z mojego doświadczenia wynika, że dobrze sformułowany, ambitny cel uruchamia zdrową rywalizację i buduje poczucie sensu pracy. Warto pamiętać, by ambicja nie prowadziła do nierealnych oczekiwań – tutaj ważna jest rola lidera, żeby dobrze poznać możliwości zespołu. Sumując: ambitny cel to nie tylko wyzwanie, ale też szansa na znaczący rozwój zawodowy i osobisty.

Pytanie 22

Który z algorytmów ma złożoność O(n²)?

A. Merge Sort
B. Dijkstra
C. Bubble Sort
D. Binary Search
Binary Search to algorytm wyszukiwania o złożoności O(log n), który przeszukuje posortowaną tablicę, dzieląc ją na pół w każdej iteracji. Merge Sort ma złożoność O(n log n) i wykorzystuje technikę 'dziel i zwyciężaj', dzieląc tablicę na mniejsze części i łącząc je w odpowiedniej kolejności. Algorytm Dijkstry jest używany do znajdowania najkrótszej ścieżki w grafach i jego złożoność zależy od implementacji – w przypadku zastosowania kopca binarnego wynosi O(E + V log V), gdzie E to liczba krawędzi, a V to liczba wierzchołków.

Pytanie 23

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 24

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

A. Nagłówek HTTP
B. Tabela w bazie danych
C. Pola tekstowe do wprowadzania danych użytkownika
D. Plik graficzny
Pola tekstowe do wprowadzania danych użytkownika są kluczowym elementem dynamicznego formularza logowania. Umożliwiają one użytkownikowi wprowadzenie informacji, takich jak nazwa użytkownika i hasło, co jest niezbędne do uwierzytelnienia w systemie. Formularze HTML wykorzystują tagi <input> do tworzenia pól tekstowych, a ich interakcja z użytkownikiem może być wspierana przez JavaScript lub inne technologie frontendowe, które walidują dane i zapewniają bezpieczeństwo procesu logowania. Pola tekstowe mogą być wzbogacone o atrybuty, takie jak 'required', 'pattern' czy 'type', które dodatkowo zabezpieczają formularz i ułatwiają użytkownikowi poprawne wypełnienie danych.

Pytanie 25

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

A. Swift
B. Java
C. C++
D. Objective-C
Objective-C, język stworzony głównie dla systemów Apple, nie jest odpowiedni dla aplikacji na Androida. Jest to język obiektowy, który opiera się na C i wprowadza dynamiczne właściwości, jednak jego użycie jest ograniczone do platform iOS, co sprawia, że nie może być używany w Android Studio. Kolejnym językiem, C++, to język ogólnego przeznaczenia, który jest używany w wielu dziedzinach, w tym w programowaniu systemowym oraz w grach. Choć możliwe jest tworzenie aplikacji na Androida w C++, zwykle wykorzystuje się go w połączeniu z JNI (Java Native Interface), co może wprowadzać złożoność i wymagać dodatkowej konfiguracji. C++ nie jest językiem preferowanym dla większości aplikacji mobilnych na Androida, ponieważ Android Studio jest zoptymalizowane pod kątem Javy. Z kolei Swift, nowoczesny język programowania od Apple, jest stworzony dla iOS i macOS, co sprawia, że jego użycie w kontekście aplikacji Android jest całkowicie nieodpowiednie. Swift jest językiem wysokiego poziomu, który wspiera bezpieczne programowanie, ale nie ma żadnego wsparcia ani integracji z Android Studio. W sumie, wszystkie wymienione języki są niewłaściwe w kontekście tworzenia aplikacji na Androida, gdzie najskuteczniejszym i najbardziej optymalnym rozwiązaniem pozostaje Java.

Pytanie 26

Jednym z elementów, które mają zostać zaimplementowane w aplikacji, jest możliwość cofnięcia ostatnich działań do 20 operacji wstecz (undo). Struktura danych, która jest odpowiednia do tego celu i pozwala na dostęp tylko do ostatnio dodanego elementu, to:

A. drzewo
B. tablica
C. stos
D. kolejka
Stos to struktura danych, która działa na zasadzie LIFO (Last In, First Out), co oznacza, że ostatni dodany element jest pierwszym, który zostaje usunięty. Ta cecha sprawia, że stos jest idealnym rozwiązaniem dla funkcjonalności cofania operacji, ponieważ pozwala na skuteczne zarządzanie historią działań użytkownika. W przypadku aplikacji, która wymaga cofania ostatnich 20 operacji, stos może przechowywać te operacje, dodając nowe elementy na szczyt, a następnie usuwając je z tej samej pozycji. Przykładem zastosowania stosu w praktyce może być edytor tekstu, w którym użytkownik może cofać swoje ostatnie zmiany. Gdy użytkownik wykonuje operację, taka jak dodanie lub usunięcie tekstu, ta operacja jest umieszczana na stosie. Jeśli użytkownik wybiera opcję cofnięcia, ostatnia operacja jest usuwana z góry stosu, co przywraca wcześniejszy stan dokumentu. Warto również zauważyć, że wiele języków programowania oferuje wbudowane klasy lub biblioteki do zarządzania stosami, co ułatwia jego implementację. Stos jest nie tylko efektywny w kontekście czasowym, ale także pamięciowym, co czyni go doskonałym wyborem dla tego typu aplikacji.

Pytanie 27

Jaką liczbę warstw zawiera model TCP/IP?

A. 5
B. 7
C. 2
D. 4
Model TCP/IP, znany również jako Internet Protocol Suite, składa się z czterech warstw: warstwy aplikacji, warstwy transportowej, warstwy internetowej oraz warstwy dostępu do sieci. Warstwa aplikacji zajmuje się interakcjami z użytkownikami oraz aplikacjami, implementując protokoły takie jak HTTP, FTP, SMTP. Warstwa transportowa zapewnia komunikację między aplikacjami, w tym protokoły TCP i UDP, które różnią się pod względem niezawodności i kontroli przepływu. Warstwa internetowa, reprezentowana głównie przez protokół IP, odpowiada za adresowanie i trasowanie pakietów danych w sieci. Ostatnia warstwa, warstwa dostępu do sieci, obejmuje protokoły odpowiedzialne za fizyczne przesyłanie danych przez różne media, jak Ethernet czy Wi-Fi. Zrozumienie tych warstw jest kluczowe dla projektowania i implementacji rozwiązań sieciowych, a także dla analizy standardów, takich jak RFC 791 dla IPv4 oraz RFC 2460 dla IPv6, które definiują zasady działania protokołów w warstwie internetowej.

Pytanie 28

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

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

Pytanie 29

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

A. Quick Sort
B. Merge Sort
C. Bubble Sort
D. Binary Search
Binary Search jest algorytmem, który służy do efektywnego przeszukiwania uporządkowanych zbiorów danych, a nie do sortowania. Działa na zasadzie dzielenia zbioru na pół i eliminowania połowy z nich w każdym kroku, co pozwala na szybkie znalezienie poszukiwanej wartości. Jest to przykład algorytmu o czasie działania O(log n), co sprawia, że jest znacznie szybszy od prostego przeszukiwania liniowego. Przykładowo, gdy mamy posortowaną tablicę liczb, Binary Search może być użyty do znalezienia konkretnej liczby, eliminując w każdym kroku połowę zbioru, aż do odnalezienia wartości lub stwierdzenia, że jej nie ma. W kontekście branżowym, Binary Search jest szeroko stosowany w różnych aplikacjach, gdzie wymagane jest szybkie przeszukiwanie danych, na przykład w bazach danych i aplikacjach wyszukiwania. Kluczowe jest zrozumienie różnicy między algorytmem przeszukiwania a algorytmem sortowania; sortowanie odnosi się do organizacji danych w określonym porządku, podczas gdy Binary Search koncentruje się na znajdowaniu elementów w już posortowanych zbiorach.

Pytanie 30

Wskaż uproszczoną wersję kodu XAML dla elementów w pokazanym oknie dialogowym?

Ilustracja do pytania
A. Kod 4
B. Kod 3
C. Kod 2
D. Kod 1
Różnorodność kontrolek XAML często prowadzi do nieporozumień, szczególnie gdy trzeba wybrać właściwe narzędzie do konkretnego zadania. W powyższym oknie dialogowym decyzja, czy użyć ListBox, ComboBox, RadioButton czy CheckBox, opiera się na tym, jak użytkownik powinien wchodzić w interakcję z danym elementem. Częstym błędem jest użycie ComboBoxa zamiast ListBoxa, podczas gdy użytkownik musi mieć wgląd w pełną listę dostępnych opcji i możliwość wyboru tylko jednej – ComboBox ukrywa opcje i wymaga dodatkowego kliknięcia, co w tym przypadku byłoby mniej wygodne. Równie częsty jest wybór RadioButtonów dla pytań o wiele odpowiedzi typu „tak/nie”, jednak RadioButtony służą do wyboru tylko jednej opcji z grupy wzajemnie wykluczających się odpowiedzi, a nie do niezależnych odpowiedzi, które można zaznaczyć równocześnie – tutaj lepiej sprawdzą się CheckBoxy, które umożliwiają wielokrotny wybór. Użycie Label zamiast TextBoxa do wprowadzania imienia zwierzaka mija się z celem, bo Label wyłącznie wyświetla tekst i nie pozwala użytkownikowi na edycję danych. W praktyce spotykam się z tym, że osoby uczące się XAML próbują uprościć kod przez zamianę kontrolek na inne podobne, jednak prowadzi to do złych doświadczeń użytkownika i łamie podstawowe zasady projektowania interfejsów, gdzie czytelność i intuicyjność są kluczowe. Trzeba zawsze brać pod uwagę funkcjonalność danej kontrolki i dopasowywać ją do oczekiwanego zachowania aplikacji, zgodnie z dobrymi praktykami i wytycznymi dla interfejsów użytkownika.

Pytanie 31

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

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

Pytanie 32

Co to jest serverless computing?

A. Proces kompilacji kodu bezpośrednio w przeglądarce użytkownika
B. Technika projektowania baz danych bez użycia serwera SQL
C. Model wykonywania kodu w chmurze bez konieczności zarządzania infrastrukturą serwerową
D. Metoda tworzenia aplikacji bez użycia back-endu
Serverless computing to model dostarczania usług obliczeniowych, który pozwala programistom skupić się na pisaniu kodu, bez konieczności zarządzania serwerami czy infrastrukturą. W tym modelu, dostawcy usług chmurowych automatycznie przydzielają zasoby obliczeniowe w odpowiedzi na zdarzenia, co oznacza, że użytkownicy płacą jedynie za rzeczywistą moc obliczeniową, której używają, a nie za z góry ustalone zasoby. Przykładem zastosowania serverless computing może być wykorzystanie funkcji AWS Lambda, która uruchamia kod w odpowiedzi na zdarzenia, takie jak zmiany w bazie danych, przesyłanie plików do chmury czy wywołania API. Ten model jest zgodny z zasadami DevOps oraz architekturą mikroserwisów, które promują elastyczność i szybkość w dostarczaniu aplikacji. Dobrą praktyką jest również integrowanie serverless computing z systemami CI/CD, co pozwala na automatyczne wdrażanie i zarządzanie kodem w sposób efektywny.

Pytanie 33

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

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

Pytanie 34

Algorytm wyszukiwania sekwencyjnego z wykorzystaniem wartownika opiera się na założeniu, że

A. na końcu analizowanego zbioru należy dodać wartownika
B. zbiór danych wejściowych musi być uporządkowany
C. zbiór ma zawsze 100 elementów
D. szukany element powinien wystąpić wielokrotnie w zbiorze
Algorytm sekwencyjnego wyszukiwania elementu z wartownikiem jest techniką optymalizacji procesu wyszukiwania w strukturach danych, która znacząco zwiększa efektywność operacji w przypadkach, gdy zbiór danych jest duży. Wartownik to specjalny element, który jest dodawany na końcu przeszukiwanego zbioru, co pozwala na uproszczenie warunków zakończenia pętli przeszukiwania. Kiedy algorytm przeszukuje zbiór, porównuje każdy element z poszukiwanym, a gdy znajdzie element, może zakończyć działanie. Dodanie wartownika pozwala uniknąć potrzeby sprawdzania, czy aktualnie przeszukiwany element jest ostatnim z oryginalnego zbioru, co z kolei zmniejsza liczbę porównań i przyspiesza proces wyszukiwania. W praktyce algorytm ten jest szczególnie użyteczny w przypadku niewielkich zbiorów danych, gdzie efektywność jest kluczowa. Przykładem zastosowania może być edytor tekstu, w którym użytkownik wyszukuje konkretne słowa w dokumencie, a dodanie wartownika usprawnia ten proces. Zgodnie z zasadami wydajnego programowania, ta technika stanowi jeden z podstawowych mechanizmów stosowanych w algorytmice, co czyni ją fundamentalnym konceptem w nauce o komputerach.

Pytanie 35

Wskaż odpowiedź, która używa parafrazowania jako metodę aktywnego słuchania, gdy klient mówi: "Interesuje mnie aplikacja, która działa szybko, niezależnie od tego, czy korzysta z niej kilku czy tysiąc użytkowników"?

A. Jeśli dobrze zrozumiałam, chodzi o aplikację, która efektywnie obsługuje różne obciążenia
B. Dlaczego Pani potrzebuje takiej aplikacji?
C. Ilu użytkowników planuje z niej skorzystać?
D. Czuję pewne wątpliwości w Pani głosie. Czy mogę zadać kilka pytań?
Parafraza to świetna technika, która pomaga zrozumieć, co rozmówca ma na myśli. Jak w tym przypadku – odpowiedź, która mówi: 'Jeśli dobrze rozumiem, chodzi o aplikację, która radzi sobie z różnym obciążeniem,' naprawdę dobrze oddaje to, co klient próbował przekazać. Klient podkreśla, że ważne jest dla niego, aby aplikacja była wydajna, niezależnie od tego, ile osób z niej korzysta. Użycie terminu 'radzi sobie z obciążeniem' jest trafne, bo dotyczy zdolności systemu do przystosowywania się do zmieniającej się liczby użytkowników i ich aktywności. To pokazuje, że konsultant dobrze zrozumiał potrzeby klienta i otwiera możliwości do dalszej rozmowy o technicznych detalach aplikacji, a to jest kluczowe w sprzedaży i budowaniu dobrych relacji z klientem.

Pytanie 36

Który z języków programowania jest najczęściej wykorzystywany do budowania aplikacji internetowych po stronie serwera?

A. JavaScript
B. HTML
C. PHP
D. CSS
PHP to jeden z najczęściej używanych języków programowania do tworzenia aplikacji webowych po stronie serwera. Jest to język skryptowy, który umożliwia dynamiczne generowanie treści stron internetowych, zarządzanie sesjami użytkowników, obsługę formularzy oraz integrację z bazami danych. PHP napędza popularne systemy zarządzania treścią (CMS), takie jak WordPress, Joomla czy Drupal. Dzięki swojej prostocie, szerokiemu wsparciu społeczności oraz dużej liczbie gotowych bibliotek i frameworków (np. Laravel), PHP pozostaje jednym z czołowych języków backendowych. PHP pozwala również na szybkie wdrażanie aplikacji i jest kompatybilny z wieloma serwerami WWW, co czyni go uniwersalnym wyborem w budowie aplikacji webowych.

Pytanie 37

Oznaczenie ochrony przeciwpożarowej przedstawione na symbolu wskazuje na

Ilustracja do pytania
A. punkt remote release
B. rozdzielnię elektryczną
C. system alarmowy przeciwpożarowy
D. przełącznik zasilania
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.

Pytanie 38

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

A. Spyware
B. Keylogger
C. Trojan
D. Adware
Keylogger to takie złośliwe oprogramowanie, które działa w tle i rejestruje wszystkie naciśnięcia klawiszy. To naprawdę niebezpieczne, bo może przechwytywać hasła i inne ważne dane osobowe. Keyloggery mogą się dostawać na komputer na różne sposoby, na przykład przez zainfekowane pliki, złośliwe reklamy albo w ramach innych niebezpiecznych programów. Przykładami takich keyloggerów są Spyrix czy Perfect Keylogger, które mogą monitorować, co robisz na komputerze. Z punktu widzenia bezpieczeństwa, standardy takie jak ISO/IEC 27001 mówią, jak ważna jest ochrona informacji. Dlatego tak istotne jest, żeby użytkownicy mieli świadomość zagrożeń, jakie niosą keyloggery i używali dobrego oprogramowania antywirusowego, żeby chronić swoje urządzenia i dane.

Pytanie 39

Jaka jest składnia komentarza jednoliniowego w języku Python?

A. #
B. !
C. ""
D. //
Komentarz jednoliniowy w Pythonie zaczynamy od znaku hash, czyli #. To jest taki uniwersalny sposób na szybkie dodanie uwagi lub wyjaśnienia bez wpływu na działanie kodu. Moim zdaniem to bardzo praktyczne – wystarczy po prostu wpisać # i reszta linii jest ignorowana przez interpreter. W dużych projektach często spotyka się krótkie komentarze obok wyrażeń, np. x += 1 # inkrementacja liczby porządkowej. Co ciekawe, Python nie posiada stricte blokowych komentarzy, jak niektóre inne języki (np. /* ... */ w C lub Java), więc hashe naprawdę często się stosuje. To niesamowicie pomaga przy czytelności kodu, szczególnie gdy wracamy do własnych plików po kilku tygodniach albo pracujemy w zespole. PEP 8, czyli oficjalny przewodnik stylu Pythona, zaleca wręcz regularne używanie komentarzy do wyjaśniania „dlaczego” coś robimy, nie tylko „co” robimy. Dobrze napisany komentarz może skrócić czas szukania błędów albo tłumaczenia rozwiązań innym. Z mojego doświadczenia, warto pilnować, by komentarze nie były przestarzałe – łatwo zapomnieć o ich aktualizacji po zmianach w kodzie. Jeśli kiedyś napotkasz kod bez #, a z innymi znakami, to od razu czerwona lampka: to raczej nie jest Python.

Pytanie 40

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

A. realizowane przez zespół zatrudnionych testerów z Google
B. prowadzone w oparciu o dokument zawierający przypadki testowe
C. podzielone na testy dotyczące funkcjonalności, wydajności i skalowalności
D. przeprowadzane przez grupę docelowych użytkowników aplikacji
Wiele osób myśli, że testy Beta w Google Play to po prostu jakaś zaawansowana faza testowania, która polega na sprawdzaniu aplikacji pod kątem funkcjonalności, wydajności czy skalowalności – i jasne, takie aspekty są ważne, ale nie o to chodzi w Beta-testach oferowanych przez Google Play. Tego typu testy, gdzie skupiamy się na dokładnym sprawdzeniu każdego modułu, to raczej domena testów wewnętrznych albo testów QA prowadzonych przez specjalistyczny zespół jeszcze przed udostępnieniem aplikacji na zewnątrz. Z kolei odnoszenie się do dokumentów z przypadkami testowymi, czyli tak zwanych test cases, to klasyczny element manualnego testowania, gdzie testerzy pracują według określonego scenariusza – a testy Beta mają być właśnie spontaniczne i bardziej naturalne, bo chcemy poznać prawdziwe reakcje użytkowników, a nie tylko sprawdzić, czy aplikacja przechodzi określone kroki. Jeszcze innym nieporozumieniem jest przekonanie, że testy Beta są realizowane przez pracowników Google – w rzeczywistości Google udostępnia tylko narzędzia i infrastrukturę do prowadzenia takich testów, ale to deweloper decyduje, kto będzie testował aplikację. Typowym błędem myślenia jest tutaj założenie, że jakość testów zależy od jakiejś zewnętrznej, eksperckiej instytucji. Tymczasem cała idea testów Beta opiera się na zaangażowaniu realnych użytkowników, którzy korzystają z aplikacji w normalnych warunkach, co umożliwia wychwycenie problemów, których nie widać w czystym środowisku testowym. Branżowe doświadczenie pokazuje, że pomijanie tego etapu skutkuje brakiem cennych informacji zwrotnych i często prowadzi do rozczarowania użytkowników już po oficjalnym wydaniu. Ostatecznie to właśnie otwarcie się na opinie grupy docelowej na tym etapie pozwala uniknąć typowych błędów i podnieść jakość produktu końcowego.