Wyniki egzaminu

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

Egzamin niezdany

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

Wymagane minimum: 20 punktów (50%)

Udostępnij swój wynik
Szczegółowe wyniki:
Pytanie 1

Wskaż właściwość charakterystyczną dla metody abstrakcyjnej?

A. jest pusta w klasie nadrzędnej
B. jest pusta w klasach dziedziczących
C. zawsze jest prywatna
D. nie ma implementacji w klasie bazowej

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Metoda abstrakcyjna to taki specjalny rodzaj metody, który pojawia się w programowaniu obiektowym, głównie w językach jak Java, C# czy Python (tam nazywa się abstractmethod). Jej kluczową właściwością jest to, że nie ma własnej implementacji w klasie bazowej, czyli tej nadrzędnej. To trochę jakby ktoś powiedział: 'Hej, tutaj powinna być jakaś funkcja, ale jeszcze nie wiem, jak dokładnie ma działać – niech ktoś, kto będzie po mnie dziedziczył po tej klasie, sam ją zdefiniuje.' Dzięki temu daje się klasom pochodnym jasny sygnał, że muszą tę metodę zaimplementować, żeby klasa mogła poprawnie funkcjonować. W praktyce, jeśli próbujesz stworzyć obiekt klasy bazowej zawierającej metody abstrakcyjne, kompilator się obrazi (no, rzuci wyjątkiem albo nawet nie pozwoli na kompilację). Moim zdaniem to bardzo praktyczne podejście, bo wymusza spójność w architekturze kodu – każdy, kto dziedziczy po klasie bazowej, nie może zapomnieć o kluczowych metodach. Standardy branżowe, jak SOLID, promują taką separację odpowiedzialności i abstrakcję, dzięki czemu kod jest czytelniejszy i łatwiejszy do rozbudowy. Przykładowo, jeśli masz klasę abstrakcyjną 'Figura', to metoda obliczPole() nie ma sensu bez konkretnej figury, więc w klasie bazowej zostaje abstrakcyjna, a dopiero w 'Kwadracie' czy 'Kole' dostaje realną implementację. Z mojego doświadczenia, takie podejście bardzo pomaga, kiedy projekt robi się większy, bo jasno wiadomo, co jeszcze trzeba dopisać w klasach pochodnych. Jest to wręcz obowiązkowe w wielu wzorcach projektowych, na przykład w strategii albo szablonie metody.

Pytanie 2

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

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
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 3

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

A. Singleton (Singleton)
B. Metoda szablonowa (Template method)
C. Fasada (Facade)
D. Kompozyt (Composite)

Brak odpowiedzi na to pytanie.

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

Pytanie 4

Do form komunikacji werbalnej zalicza się

A. wyraz twarzy
B. gestykulacja
C. pozycja ciała
D. mówienie

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Mówienie to podstawowa forma komunikacji werbalnej – bez tego ciężko byłoby przekazać bardziej złożone treści, polecenia czy po prostu podzielić się informacjami w jasny i jednoznaczny sposób. Właśnie dlatego w większości branż technicznych, niezależnie czy rozmawiamy o pracy na budowie, czy w biurze projektowym, umiejętność jasnego i zrozumiałego mówienia jest często kluczowa. W praktyce komunikacja werbalna opiera się na słowach, które przekazujemy ustnie. Moim zdaniem najważniejsze jest to, że pozwala uniknąć nieporozumień i usprawnia współpracę w zespole – szczególnie gdy pracujemy przy dużych projektach, gdzie każdy detal ma znaczenie. W codziennych sytuacjach, takich jak prowadzenie spotkań, omawianie problemów technicznych czy instruowanie nowych pracowników, mówienie okazuje się nieocenione. Dodatkowo, standardy komunikacji interpersonalnej podkreślają, że skuteczny przekaz werbalny wymaga nie tylko odpowiedniego doboru słów, ale też umiejętności dostosowania tonu głosu i tempa mówienia do sytuacji. Warto też pamiętać, że mowa ludzka jest najdokładniejszym narzędziem do przekazywania informacji, bo daje możliwość dopytania, wyjaśnienia i natychmiastowej korekty, czego raczej nie da się osiągnąć tylko poprzez gesty czy mimikę. Z mojego doświadczenia wynika, że inwestowanie w rozwój umiejętności werbalnych zwraca się bardzo szybko w pracy technika czy specjalisty.

Pytanie 5

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

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Faza implementacji to etap cyklu życia projektu informatycznego, w którym następuje integracja i testowanie wszystkich modułów systemu. Po zakończeniu fazy projektowania i programowania, elementy aplikacji są łączone w jeden spójny system. Integracja polega na połączeniu komponentów, co umożliwia sprawdzenie ich współpracy oraz poprawności przepływu danych. Następnie przeprowadzane są testy integracyjne i systemowe, których celem jest wykrycie błędów w interakcji między modułami. Proces ten jest niezbędny, aby zapewnić stabilność aplikacji przed wdrożeniem do środowiska produkcyjnego. Skuteczna integracja minimalizuje ryzyko awarii i zwiększa niezawodność systemu.

Pytanie 6

Jakie kroki należy podjąć po wykryciu błędu w kodzie podczas testowania?

A. Pominąć błąd, jeżeli aplikacja funkcjonuje poprawnie
B. Usunąć moduł, który zawiera błąd
C. Naprawić błąd i przeprowadzić ponowne testy aplikacji
D. Zgłosić błąd użytkownikowi końcowemu

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Po znalezieniu błędu w kodzie podczas testowania kluczowym krokiem jest poprawienie błędu i ponowne przetestowanie aplikacji. Taki cykl iteracyjny pozwala na eliminację błędów i zapewnienie, że aplikacja działa zgodnie z oczekiwaniami. Testowanie po każdej poprawce jest niezbędne, aby upewnić się, że wprowadzone zmiany nie wpłynęły negatywnie na inne części aplikacji. Taka praktyka jest integralną częścią Continuous Integration (CI) i Continuous Deployment (CD), które zakładają częste wdrażanie i testowanie kodu. Poprawienie błędów na wczesnym etapie rozwoju minimalizuje koszty i czas potrzebny na naprawę błędów w fazie produkcyjnej, co przyczynia się do stabilności i wysokiej jakości końcowego produktu.

Pytanie 7

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

A. pola
B. interfejsy
C. metody
D. funkcje

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
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 8

Podaj przykład incydentu w miejscu pracy?

A. kontuzja stawu skokowego, która zdarzyła się w trakcie bezpośredniej drogi do miejsca zatrudnienia
B. oparzenie dłoni, które miało miejsce podczas nieobowiązkowego szkolenia w czasie prywatnym pracownika
C. złamanie nogi w trakcie urlopu wypoczynkowego przyznanego przez pracodawcę
D. złe samopoczucie spowodowane przewlekłą chorobą zatrudnionego, które wystąpiło w biurze

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
To właśnie sytuacja, gdy ktoś doznał kontuzji stawu skokowego podczas bezpośredniej drogi do pracy, jest klasycznym przykładem incydentu związanego z pracą, a konkretnie tzw. wypadku w drodze do pracy. Zgodnie z przepisami BHP oraz praktyką ubezpieczeniową, za incydent w miejscu pracy uznaje się nie tylko zdarzenia mające miejsce na terenie zakładu, ale także te występujące w drodze do lub z pracy – oczywiście pod warunkiem, że droga była bezpośrednia i nieprzerwana, bez załatwiania spraw prywatnych po drodze. Moim zdaniem ta kwestia jest często niedoceniana przez pracowników – wielu z nas zapomina, że wypadek w drodze do pracy daje podobne uprawnienia jak wypadek w zakładzie pracy, oczywiście po spełnieniu określonych wymogów formalnych, np. zgłoszenie incydentu pracodawcy, udokumentowanie miejsca i czasu zdarzenia. W praktyce wielu pracodawców i pracowników nie do końca rozumie, jakie sytuacje faktycznie podlegają pod te przepisy. Na przykład, jeśli ktoś skręcił nogę idąc prosto z domu do pracy i nie zatrzymywał się po drodze, to ten incydent kwalifikuje się jako wypadek w drodze do pracy. Warto znać te zasady, żeby nie przegapić swoich praw. Branżowe standardy, takie jak wytyczne PIP i ubezpieczycieli, jasno wskazują na obowiązek rejestrowania i analizowania takich zdarzeń, bo z punktu widzenia bezpieczeństwa pracy każde takie zdarzenie jest sygnałem do poprawy szeroko rozumianych warunków pracy, nawet jeśli zdarzy się poza samym biurem czy halą.

Pytanie 9

Jaką strukturę danych można zrealizować, korzystając jedynie z wymienionych poniżej metod:

push(arg) – dodaje element
pop() – usuwa ostatnio dodany element
peek() – zwraca ostatnio dodany element bez usuwania
isEmpty() – sprawdza czy istnieją dane w strukturze
A. tablica
B. kolejka
C. stos
D. drzewo binarne

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Stos to jedna z najbardziej podstawowych i jednocześnie użytecznych struktur danych. Wszystkie wymienione metody - push, pop, peek oraz isEmpty - są klasycznymi operacjami definiującymi właśnie stos (czyli tzw. LIFO, czyli Last-In-First-Out). Oznacza to, że ostatni element, który został dodany do stosu, będzie pierwszym usuniętym. Z mojego doświadczenia wynika, że stosy są bardzo często wykorzystywane w praktyce, na przykład przy realizacji algorytmów rekurencyjnych (zarówno w kodzie, jak i na niższym poziomie, jak stos wywołań funkcji w pamięci programu), co jest zgodne ze standardami języków programowania, takich jak C, Java czy Python. W praktycznych zastosowaniach stosów używa się m.in. przy sprawdzaniu poprawności nawiasów w wyrażeniach matematycznych, przy parsowaniu kodu, cofnięciach operacji w edytorach tekstu czy realizacji algorytmu przeszukiwania w głąb (DFS). Co ciekawe, stos można łatwo zaimplementować zarówno na tablicach dynamicznych, jak i na listach jednokierunkowych. Dobre praktyki branżowe zalecają, aby stos wykorzystywać zawsze tam, gdzie potrzebny jest szybki dostęp do ostatnio dodanego elementu i nie zachodzi potrzeba dostępu w inny sposób. Moim zdaniem, zrozumienie działania stosu to fundament dla każdego, kto serio podchodzi do programowania i algorytmiki.

Pytanie 10

Aby tworzyć aplikacje desktopowe w języku Java, można wybrać jedno z poniższych środowisk

A. SharpDevelop
B. NetBeans
C. Ms Visual Studio
D. PyCharm

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
NetBeans to środowisko IDE, które od lat jest mocno kojarzone z programowaniem w Javie, szczególnie jeśli chodzi o tworzenie aplikacji desktopowych. Moim zdaniem to jedno z wygodniejszych narzędzi dla osób, które chcą się na poważnie zabrać za GUI z użyciem Swinga, JavaFX czy nawet starszego AWT. NetBeans posiada wbudowany kreator graficznych interfejsów użytkownika – to tzw. Matisse, który naprawdę upraszcza projektowanie okienek, przycisków czy pól tekstowych. No i nie trzeba się męczyć z ręcznym ustawianiem każdego komponentu w kodzie – wystarczy przeciągnąć i upuścić. To narzędzie od zawsze stawiało na wsparcie dla Javy: podpowiadanie kodu, debugging, zarządzanie bibliotekami czy automatyczna kompilacja… wszystko tu działa od ręki. W praktyce NetBeans wykorzystywany jest zarówno przez początkujących, jak i przez doświadczonych programistów, bo ułatwia utrzymanie dużych projektów. Przykład z życia: wiele aplikacji administracyjnych, narzędziowych czy nawet systemów do zarządzania firmą powstało właśnie przy użyciu NetBeansa i JavaFX. Co ciekawe, środowisko wspiera też inne języki, ale jego rdzeń zawsze był skupiony na Javie. W branży uważa się, że korzystanie z NetBeansa to dobra praktyka, bo pozwala na szybkie prototypowanie interfejsów i jest zgodny ze standardami Java Enterprise. Jeśli chcesz budować desktopowe aplikacje w Javie – nie ma co się długo zastanawiać, NetBeans jest naprawdę solidnym wyborem.

Pytanie 11

Co oznacza skrót CDN w kontekście aplikacji webowych?

A. Content Delivery Network - sieć rozproszona geograficznie, służąca do dostarczania treści
B. Content Definition Notation - notacja do definiowania treści w aplikacjach
C. Compressed Data Node - węzeł kompresji danych w architekturze mikrousług
D. Cross Domain Navigation - metoda nawigacji między domenami w aplikacjach webowych

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Skrót CDN oznacza Content Delivery Network, czyli sieć dostarczania treści. Jest to architektura rozproszona geograficznie, która umożliwia efektywne dostarczanie zasobów internetowych, takich jak obrazy, filmy, skrypty czy pliki CSS. CDN składa się z wielu serwerów, które są rozmieszczone w różnych lokalizacjach na całym świecie. Gdy użytkownik próbuje uzyskać dostęp do treści, zapytanie jest kierowane do najbliższego geograficznie serwera w sieci CDN, co znacząco przyspiesza czas ładowania strony oraz zmniejsza obciążenie głównego serwera. Przykłady popularnych usług CDN to Cloudflare, Amazon CloudFront czy Akamai. Zastosowanie CDN ma kluczowe znaczenie dla poprawy wydajności aplikacji webowych, szczególnie w kontekście globalnych użytkowników, gdzie opóźnienia w dostępie do treści mogą wpływać na doświadczenia użytkowników. Ponadto, wykorzystanie sieci CDN może wspierać również optymalizację SEO, ponieważ szybko ładujące się strony są preferowane przez wyszukiwarki. W branży e-commerce, efektywne korzystanie z CDN jest standardem, który pozwala na utrzymanie wysokiej dostępności i wydajności aplikacji, co jest niezbędne dla sukcesu online.

Pytanie 12

W języku C# szablon List umożliwia korzystanie z listy. Z definicji obiektu kolekcji wynika, że jego elementami mogą być:

List<int> wykaz = new List<int>();
A. liczby całkowite
B. elementy o nieokreślonym typie
C. liczby rzeczywiste
D. elementy typu List

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Jeżeli chodzi o kolekcje generyczne w C#, to List<int> jest przykładem bardzo konkretnego zastosowania. Ten zapis oznacza, że tworzymy listę, której elementami mogą być wyłącznie liczby całkowite – dokładnie takie, jakie reprezentuje typ int w .NET (czyli 32-bitowe liczby całkowite ze znakiem). Wynika to z idei generyczności: typ podany w nawiasach ostrych (<int>) precyzyjnie narzuca typ przechowywanych danych. To daje nam bezpieczeństwo typów, na które zwracają uwagę wszyscy programiści C# – nie da się przez pomyłkę dodać tam np. napisu czy obiektu innego typu. Z mojego doświadczenia mogę powiedzieć, że to bardzo upraszcza życie, bo kompilator od razu wychwyci próby niewłaściwego użycia. Praktycznie, gdy tworzysz List<int>, możesz ją wykorzystać np. do przechowywania identyfikatorów, wyników testów, liczb losowych – wszędzie tam, gdzie operujesz właśnie na liczbach całkowitych. Warto dodać, że generyczność jest jednym z filarów nowoczesnych języków, pozwalając pisać kod elastyczny i bezpieczny zarazem. Trochę jak z pudełkiem na śrubki: jak wrzucisz inne rzeczy, to od razu się pogubisz i zrobi się bałagan. Tutaj jest bardzo jasno – List<int> to zawsze lista liczb całkowitych i już. Dobre praktyki branżowe podpowiadają, żeby zawsze stosować jak najbardziej precyzyjne typy w generycznych kolekcjach, bo to ułatwia późniejsze utrzymanie kodu i ogranicza potencjalne błędy.

Pytanie 13

Jaką nazwę elementu interfejsu należy wprowadzić w pierwszej linii kodu, na miejscu <??? aby został on wyświetlony w podany sposób?

<???
    android:layout_margin="50dp"
    android:switchMinWidth="60dp"
    android:text="Zgadzasz się?"
    android:textOff="NIE"
    android:testOn="TAK" />
Ilustracja do pytania
A. RatingBar
B. Switch
C. Spinner
D. SeekBar

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Switch to bardzo charakterystyczny element interfejsu Androida, który służy do przełączania między dwoma stanami, np. włącz/wyłącz, tak/nie. Na screenie wyraźnie widać typowy suwak z okrągłym przyciskiem, który przemieszcza się na boki – dokładnie tak działa Switch. W kodzie XML także pojawiają się atrybuty takie jak text, textOff, textOn – one są właściwe właśnie dla komponentu Switch, bo pozwalają podpisać każdy ze stanów na przełączniku. Praktycznie w każdej nowoczesnej aplikacji spotyka się Switcha do wyrażania zgody, akceptacji regulaminu albo przełączania opcji (np. tryb ciemny). Z mojego doświadczenia to jest dużo wygodniejsze dla użytkownika niż klasyczne checkboxy, bo od razu widać, który stan jest aktywny – a UX-owcy też bardzo to chwalą. Warto pamiętać, że Switch ma swoje domyślne style zgodne z Material Design, więc aplikacja wygląda nowocześnie bez dodatkowej pracy. Dobrą praktyką jest wykorzystywanie Switcha właśnie wtedy, gdy potrzebujemy zmiany binarnej, a nie kilku opcji do wyboru. Jeśli ktoś myśli o bardziej zaawansowanych interfejsach, to Switch pozwala łatwo reagować na zmianę stanu w kodzie Java/Kotlin poprzez listener OnCheckedChangeListener. No i jest to jeden z tych komponentów, które naprawdę warto znać, bo są podstawą w każdym projekcie mobilnym.

Pytanie 14

Jaki framework umożliwia tworzenie interaktywnych interfejsów użytkownika w języku TypeScript?

A. ASP.NET Core
B. Angular
C. Django
D. jQuery

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Angular to popularny framework oparty na TypeScript, który umożliwia tworzenie dynamicznych i rozbudowanych interfejsów użytkownika. Jest rozwijany przez Google i używany do budowy aplikacji typu Single Page Applications (SPA), które cechują się płynnością działania i interaktywnością. Angular oferuje bogaty ekosystem narzędzi wspierających programistów, takich jak Angular CLI, który pozwala na szybkie generowanie komponentów, serwisów i modułów. Wsparcie dla TypeScript oznacza, że Angular pozwala na wykorzystywanie typów, interfejsów oraz zaawansowanych narzędzi do refaktoryzacji kodu, co przekłada się na większą czytelność i bezpieczeństwo aplikacji. Dzięki modularnej architekturze Angular wspiera tworzenie aplikacji, które są łatwe w utrzymaniu i skalowaniu. Jego dwukierunkowe wiązanie danych (two-way data binding) oraz możliwość dynamicznej aktualizacji widoków czynią go jednym z liderów na rynku frameworków frontendowych.

Pytanie 15

Które z wymienionych stwierdzeń najcelniej opisuje proces uruchamiania aplikacji?

A. Tłumaczenie kodu źródłowego na język pośredni
B. Przetwarzanie kodu źródłowego przez kompilator
C. Generowanie pliku źródłowego
D. Wykonywanie programu na podstawie przetłumaczonego kodu maszynowego

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Uruchomienie programu to naprawdę ważny moment, bo w tym czasie procesor zaczyna działać na kodzie maszynowym. Ten kod powstaje podczas kompilacji, która zamienia kod źródłowy na coś, co komputer rozumie. W tym etapie program trafia do pamięci, a także przygotowywane są różne dane do działania. Tak więc, to jest kluczowy krok w całej historii programu, bo decyduje, jak dobrze będzie działać.

Pytanie 16

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

A. Lodash
B. Express.js
C. TypeScript
D. Bootstrap

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
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 17

Jakie są różnice między dialogiem modalnym a niemodalnym?

A. Dialog modalny wymaga zamknięcia, aby powrócić do głównego okna aplikacji, natomiast dialog niemodalny tego nie wymaga
B. Dialog modalny jest ograniczony wyłącznie do aplikacji konsolowych
C. Dialog modalny umożliwia interakcję z innymi oknami aplikacji, a dialog niemodalny tego nie pozwala
D. Dialog modalny działa w tle, podczas gdy dialog niemodalny jest zawsze wyświetlany na pierwszym planie

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Dialog modalny to okno dialogowe, które wymaga interakcji użytkownika przed powrotem do głównego okna aplikacji. Tego rodzaju okna są często wykorzystywane do wyświetlania komunikatów, potwierdzeń lub formularzy wymagających danych wejściowych. Modalność zapewnia, że użytkownik nie może przejść do innej części aplikacji bez uprzedniego zamknięcia okna dialogowego. To rozwiązanie pomaga w wymuszeniu ważnych akcji, takich jak potwierdzenie usunięcia pliku lub zatwierdzenie płatności. Dialog niemodalny natomiast pozwala na interakcję z resztą aplikacji nawet wtedy, gdy okno dialogowe jest otwarte, co sprawdza się w mniej krytycznych sytuacjach, np. podczas wyświetlania dodatkowych opcji.

Pytanie 18

Co to jest WebAssembly (WASM)?

A. Narzędzie do automatycznego testowania aplikacji webowych
B. Metoda łączenia kodu JavaScript z kodem CSS
C. Framework JavaScript do tworzenia aplikacji mobilnych
D. Format kodu binarnego, który może być wykonywany w nowoczesnych przeglądarkach

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
WebAssembly (WASM) to nowoczesny format kodu binarnego, który umożliwia uruchamianie kodu w przeglądarkach internetowych z wysoką wydajnością. Został zaprojektowany jako uzupełnienie JavaScript, co pozwala na korzystanie z bardziej złożonych języków programowania, takich jak C, C++ czy Rust, w aplikacjach webowych. Dzięki temu deweloperzy mogą przenosić istniejący kod do środowiska przeglądarki, co znacząco zwiększa możliwości tworzenia aplikacji webowych. Przykładem zastosowania WebAssembly może być gry przeglądarkowe, które wymagają intensywnego przetwarzania danych oraz aplikacje graficzne, gdzie wydajność jest kluczowa. WebAssembly działa na zasadzie kompilacji, co pozwala na optymalne wykorzystanie zasobów systemowych. Dzięki wsparciu ze strony głównych przeglądarek, WASM stał się standardem, który przyspiesza rozwój aplikacji internetowych, zyskując uznanie w branży.

Pytanie 19

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

A. Sortowanie przez wstawianie
B. Wyszukiwanie liniowe
C. Obliczanie liczb Fibonacciego
D. Sortowanie bąbelkowe

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
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 20

Na zaprezentowanych ilustracjach znajduje się okno aplikacji w wersji początkowej oraz po wprowadzeniu danych. Przyjmując, że pole "Dostępne środki" służy do wprowadzania wartości typu rzeczywistego, wskaż elementy struktury, które najlepiej odpowiadają tym danym?

Ilustracja do pytania
A. Kod 2
B. Kod 4
C. Kod 1
D. Kod 3

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Dla pola 'Dostępne środki', które powinno przechowywać wartości rzeczywiste, odpowiednią strukturą jest ta zawierająca typ danych float lub double. Są to typy zmiennoprzecinkowe umożliwiające przechowywanie liczb z częścią ułamkową, co jest kluczowe przy operacjach finansowych i precyzyjnych obliczeniach. Wybór odpowiedniej struktury danych gwarantuje dokładność i minimalizuje ryzyko błędów związanych z zaokrągleniami.

Pytanie 21

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

int x = 5;
int y = 10;
Console.WriteLine($"Suma {x} i {y} wynosi {x + y}");
A. Suma 5 i 10 wynosi x + y
B. Error: niewłaściwa składnia
C. Suma x i y wynosi 15
D. Suma 5 i 10 wynosi 15

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Kod w języku C# wykonuje operację dodawania dwóch zmiennych, x i y, oraz wyświetla wynik w sformatowanym ciągu tekstowym. Poprawna odpowiedź to 'Suma 5 i 10 wynosi 15', ponieważ zmienna x ma wartość 5, a zmienna y ma wartość 10. Kiedy dodajemy te dwie liczby, otrzymujemy 15. Warto zwrócić uwagę na wykorzystanie interpolacji ciągów, co jest istotnym elementem w nowoczesnym C#. Umożliwia to w prosty sposób łączyć tekst z wartościami zmiennych, co zwiększa czytelność kodu. Interpolacja jest szczególnie przydatna w kontekście generowania komunikatów użytkownika i raportów. Przykład zastosowania może obejmować aplikacje, które prezentują wyniki obliczeń lub statystyki, gdzie ważne jest, aby w przyjazny sposób przedstawiać dane. Dobre praktyki programistyczne sugerują, aby unikać twardego kodowania wartości zamiast tego używać zmiennych, co ułatwia późniejsze modyfikacje i utrzymanie kodu.

Pytanie 22

Wykorzystując jeden z dwóch zaprezentowanych sposobów inkrementacji w językach z rodziny C lub Java, można zauważyć, że
Zapis pierwszy:

b = a++;
Zapis drugi:
b = ++a;
A. Tylko przy użyciu pierwszego zapisu zmienna a zostanie zwiększona o 1.
B. Wartość zmiennej b będzie wyższa po użyciu drugiego zapisu w porównaniu do pierwszego.
C. Bez względu na zastosowany sposób, w zmiennej b zawsze uzyskamy ten sam rezultat.
D. Drugi zapis nie jest zgodny ze składnią, co doprowadzi do błędów kompilacji.

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
W językach programowania z rodziny C (w tym C++ i Java) istnieją dwie formy inkrementacji: preinkrementacja (++x) i postinkrementacja (x++). Preinkrementacja zwiększa wartość zmiennej przed jej użyciem w wyrażeniu, natomiast postinkrementacja zwiększa ją dopiero po zakończeniu aktualnej operacji. Oznacza to, że w przypadku postinkrementacji, wartość zmiennej przed zwiększeniem zostanie użyta w bieżącym wyrażeniu, a dopiero potem następuje jej zwiększenie o 1. Ta subtelna różnica ma istotne znaczenie, zwłaszcza w pętlach i wyrażeniach logicznych, gdzie każda iteracja wpływa na wynik. W praktyce preinkrementacja jest nieco bardziej efektywna, ponieważ nie wymaga przechowywania kopii pierwotnej wartości zmiennej, co przekłada się na minimalnie lepszą wydajność w niektórych przypadkach.

Pytanie 23

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

A. Merge Sort
B. Binary Search
C. Dijkstra
D. Bubble Sort

Brak odpowiedzi na to pytanie.

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

Pytanie 24

Jakie jest podstawowe zadanie konstruktora w klasie?

A. Inicjalizacja obiektu w momencie jego tworzenia
B. Wprowadzenie nowej metody do już istniejącej klasy
C. Nadanie wartości polom obiektu po jego zniszczeniu
D. Usuwanie instancji obiektów

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
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 25

Które z wymienionych oznaczeń wskazuje na liniową złożoność algorytmu?

A. O(log n)
B. O(n)
C. O(1)
D. O(n²)

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Złożoność O(n) oznacza liniową zależność czasu wykonania algorytmu od rozmiaru danych wejściowych. Oznacza to, że dla każdego dodatkowego elementu algorytm wykonuje jedną dodatkową operację. Algorytmy liniowe są jednymi z najczęściej stosowanych w praktyce, ponieważ oferują dobrą równowagę między szybkością a złożonością implementacji. Przykłady algorytmów o złożoności O(n) to przeszukiwanie liniowe (Linear Search), sumowanie elementów tablicy oraz niektóre algorytmy sortowania, takie jak Counting Sort dla określonych warunków. Liniowa złożoność czyni te algorytmy bardzo efektywnymi przy przetwarzaniu dużych zbiorów danych.

Pytanie 26

Który z objawów może sugerować zawał serca?

A. Intensywny ból w klatce piersiowej promieniujący do lewej ręki
B. Gorączka oraz dreszcze
C. Spadek nastroju
D. Ból brzucha po spożyciu posiłku

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Silny ból w klatce piersiowej promieniujący do lewej ręki to klasyczny objaw zawału serca (ostrego zespołu wieńcowego). Ból ten często pojawia się nagle, jest intensywny, gniotący lub piekący i może towarzyszyć mu duszność, zawroty głowy, zimne poty i nudności. Zawał serca wynika z zablokowania jednej z tętnic wieńcowych, co prowadzi do niedokrwienia mięśnia sercowego. Szybka reakcja i wezwanie pomocy medycznej mogą uratować życie i zminimalizować uszkodzenia serca. Każda minuta jest kluczowa – nie należy czekać na ustąpienie objawów, lecz natychmiast zadzwonić na numer alarmowy 112 lub udać się do najbliższego szpitala.

Pytanie 27

Który element HTML5 służy do osadzania wideo na stronie?

A. &lt;media&gt;
B. &lt;player&gt;
C. &lt;movie&gt;
D. &lt;video&gt;

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Element HTML5 &lt;video&gt; jest standardowym tagiem służącym do osadzania wideo na stronach internetowych. Umożliwia on integrację multimediów w sposób, który jest zgodny z aktualnymi standardami sieciowymi. W porównaniu do starszych metod, które wymagały użycia zewnętrznych wtyczek, takich jak Flash, &lt;video&gt; pozwala na bezproblemowe odtwarzanie wideo w przeglądarkach nowej generacji, co zwiększa bezpieczeństwo i wydajność. Element ten oferuje wiele atrybutów, takich jak controls, autoplay, loop, preload, oraz width i height, które pozwalają na dostosowanie odtwarzacza do potrzeb użytkownika. Na przykład, używając atrybutu controls, można dodać przyciski odtwarzania, zatrzymywania lub regulacji głośności, co poprawia interaktywność i użyteczność. Dodatkowo, aby zapewnić dostępność treści wideo, warto stosować atrybuty takie jak &lt;track&gt;, który umożliwia dodawanie napisów, co jest szczególnie ważne dla osób z niepełnosprawnościami słuchowymi. Używanie &lt;video&gt; w projektach webowych to najlepsza praktyka, która wspiera rozwój dostępnych i przyjaznych dla użytkownika doświadczeń wizualnych.

Pytanie 28

W jakim celu wykorzystuje się diagram Gantta?

A. do wizualizacji powiązań między elementami systemów
B. do planowania i zarządzania projektem
C. do dokładnej analizy czasowo-kosztowej projektu
D. do przedstawiania funkcjonalności systemu

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Diagram Gantta to jeden z podstawowych i – moim zdaniem – najfajniejszych narzędzi używanych w zarządzaniu projektami, zwłaszcza w budowlance, IT czy produkcji. Jest bardzo praktyczny, bo pozwala wizualnie rozplanować, jakie zadania są do wykonania, ile mają trwać i co od czego zależy. Dzięki prostemu układowi poziomych pasków na osi czasu można szybko ogarnąć całość projektu, zobaczyć które zadania się pokrywają i gdzie mogą być wąskie gardła. Branżowe standardy, np. PMBOK, zalecają korzystanie z diagramu Gantta właśnie do planowania i monitorowania postępu. Z mojego doświadczenia to narzędzie, które łączy ludzi – wszyscy od razu widzą, kto co robi i na kiedy. Fajne jest też to, że łatwo aktualizować taki diagram w miarę zmian w projekcie. Diagram Gantta pomaga też w kontroli terminowości i identyfikacji opóźnień. Jeśli ktoś kiedyś miał styczność z programami jak MS Project czy nawet prostym Excelem – na pewno widział taki wykres. Można tam nawet dodać kamienie milowe czy zależności między zadaniami (np. jedno musi się skończyć, zanim drugie się zacznie). Tak naprawdę, w profesjonalnych firmach, zarządzanie projektem bez takiego narzędzia byłoby trochę strzałem w stopę.

Pytanie 29

Jaką cechą charakteryzuje się sieć asynchroniczna?

A. Jest bardziej niezawodna od sieci synchronicznej
B. Dane są przesyłane jedynie w określonych przedziałach czasowych
C. Wymaga synchronizacji zegarów
D. Dane są przesyłane w sposób nieciągły, bez synchronizacji zegarów

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Sieci asynchroniczne to rodzaj systemów komunikacyjnych, w których dane są przesyłane w sposób nieciągły, co oznacza, że nie wymagają one synchronizacji zegarów pomiędzy urządzeniami. W takich sieciach, każda jednostka przesyła dane w dowolnym momencie, co zwiększa elastyczność i efektywność komunikacji. Przykładem zastosowania sieci asynchronicznych są systemy oparte na protokołach, takich jak UART (Universal Asynchronous Receiver-Transmitter), które są powszechnie używane w mikrokomputerach oraz różnych urządzeniach elektronicznych. W kontekście standardów, sieci asynchroniczne są często stosowane w komunikacji szeregowej, gdzie dane są przesyłane bez ustalonych ram czasowych, co pozwala na redukcję opóźnień i zwiększenie przepustowości. W praktyce, taki model komunikacji jest idealny w sytuacjach, gdzie ciągłość przesyłu danych nie jest kluczowa, jak w przypadku transmisji danych z czujników czy urządzeń IoT, gdzie urządzenia mogą nadawać dane, gdy są gotowe, a nie w ustalonych interwałach czasowych.

Pytanie 30

Która z wymienionych metod może pomóc w walce z uzależnieniem od internetu?

A. Zainstalowanie większej ilości aplikacji rozrywkowych
B. Zwiększenie czasu spędzanego na mediach społecznościowych
C. Używanie komputera jedynie w nocy
D. Wprowadzenie systematycznych przerw od używania urządzeń cyfrowych

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Wprowadzenie systematycznych przerw od używania urządzeń cyfrowych to bardzo skuteczna metoda radzenia sobie z uzależnieniem od internetu. Rekomendują ją zarówno psychologowie, jak i specjaliści zajmujący się zdrowiem cyfrowym. W praktyce chodzi o to, żeby regularnie robić świadome przerwy od ekranu – na przykład ustawiając sobie limity czasowe, korzystając z aplikacji blokujących dostęp do określonych stron czy ustalając z góry pory dnia bez używania urządzeń elektronicznych. Takie działania mają mocno pozytywny wpływ na samodyscyplinę i pomagają odzyskać równowagę między życiem offline a online. Zresztą, nawet w poradnikach branżowych dla informatyków czy programistów można znaleźć zalecenia dotyczące odpoczynku od komputera, bo to poprawia koncentrację oraz ogólne samopoczucie. Moim zdaniem, warto przetestować różne sposoby tych przerw – czasem wystarczy wyjść na spacer, zrobić coś rękami albo po prostu porozmawiać z kimś na żywo. Regularność w tych czynnościach naprawdę robi różnicę. A co ciekawe, technika Pomodoro, znana z produktywności, świetnie sprawdza się także tutaj – 25 minut pracy, potem 5 minut przerwy bez żadnych ekranów. Z mojego doświadczenia, takie przerwy pomagają nie tylko ograniczyć korzystanie z internetu, ale też zadbać o swój wzrok i kręgosłup, co jest ważne zwłaszcza dla osób pracujących przy komputerze.

Pytanie 31

Która z operacji logicznych zwróci wartość "true", gdy obie zmienne są sobie równe?

A. x != y
B. x == y
C. x && y
D. x || y

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Operator `==` w języku C++ i wielu innych językach programowania (np. Python, Java, JavaScript) służy do porównywania dwóch wartości. Zwraca `true`, jeśli obie wartości są sobie równe, oraz `false`, jeśli są różne. Przykład: `if (x == y)` sprawdza, czy zmienna `x` jest równa zmiennej `y`. Operator ten jest kluczowy w instrukcjach warunkowych oraz pętlach, gdzie konieczne jest porównywanie wartości w celu podejmowania decyzji na podstawie wyniku tego porównania.

Pytanie 32

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

A. snake_case
B. camelCase
C. PascalCase
D. kebab-case

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
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 33

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

A. ASP.NET Core
B. Angular
C. Django
D. React.js

Brak odpowiedzi na to pytanie.

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

Pytanie 34

Którą funkcję w C++ można zastosować do dynamicznego przydzielania pamięci dla tablicy?

A. delete[]
B. sizeof()
C. free()
D. malloc()

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Funkcja 'malloc()' w języku C i C++ służy do dynamicznego alokowania pamięci dla tablic i innych struktur danych. Jest to kluczowa funkcja pozwalająca na przydzielenie określonej ilości bajtów w czasie wykonywania programu, co zwiększa elastyczność zarządzania pamięcią. Używając 'malloc()', programista może utworzyć tablicę o zmiennym rozmiarze, który nie musi być znany w czasie kompilacji. Dynamiczne alokowanie pamięci jest powszechnie stosowane w aplikacjach wymagających dużych ilości danych lub wtedy, gdy konieczne jest efektywne wykorzystanie zasobów systemowych.

Pytanie 35

Złośliwe oprogramowanie stworzone w celu przyznania hakerom uprawnień administracyjnych do komputera ofiary bez jej świadomości, to

A. robak
B. keylogger
C. wirus
D. rootkit

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Rootkit to specyficzny rodzaj złośliwego oprogramowania, który został stworzony właśnie po to, żeby uzyskać i utrzymać nieautoryzowane uprawnienia administracyjne na systemie ofiary, a jednocześnie pozostać jak najbardziej niezauważonym. W praktyce, rootkit pozwala atakującemu przejąć pełną kontrolę nad komputerem – może wtedy instalować inne szkodliwe programy, kraść dane czy omijać zabezpieczenia bez wiedzy użytkownika. Co ważne, rootkity są często wykorzystywane przez cyberprzestępców do tzw. eskalacji uprawnień, czyli podniesienia poziomu dostępu z konta zwykłego użytkownika do administratora (roota), co w świecie Linuksa i Unixa jest dość powszechną strategią. Moim zdaniem, to jeden z najtrudniejszych do wykrycia typów malware – potrafi modyfikować systemowe procesy, a nawet podszywać się pod pliki systemowe, co sprawia, że standardowe antywirusy często go nie wykrywają. W branży IT mówi się wręcz o konieczności korzystania z zaawansowanych narzędzi forensics, np. rootkit detectors i regularnym monitorowaniu integralności systemu, zgodnie z zaleceniami CIS Controls. Jeśli ktoś chce się dobrze zabezpieczyć, to naprawdę warto zwracać uwagę na nieoczywiste symptomy: podejrzane procesy, zmiany w kluczowych plikach systemowych czy dziwne aktywności sieciowe. Rootkit to prawdziwy koszmar administratorów i świetny „przykład z życia” na to, jak ważna jest segmentacja uprawnień i stosowanie zasady najmniejszych uprawnień.

Pytanie 36

Które z poniższych NIE jest zasadą programowania SOLID?

A. Single Responsibility Principle (Zasada pojedynczej odpowiedzialności)
B. Dependency Inversion Principle (Zasada odwrócenia zależności)
C. Open/Closed Principle (Zasada otwarte/zamknięte)
D. Code Reuse Principle (Zasada ponownego użycia kodu)

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Odpowiedź "Code Reuse Principle" jest prawidłowa, ponieważ nie stanowi ona jednej z pięciu zasad programowania SOLID. SOLID to akronim, który odnosi się do pięciu podstawowych zasad, które mają na celu ułatwienie tworzenia oprogramowania, które jest łatwe w utrzymaniu i rozwijaniu. W skład tych zasad wchodzą: Zasada pojedynczej odpowiedzialności (Single Responsibility Principle), Zasada otwarte/zamknięte (Open/Closed Principle), Zasada segregacji interfejsów (Interface Segregation Principle), Zasada odwrócenia zależności (Dependency Inversion Principle) oraz Zasada Liskov (Liskov Substitution Principle). Przykładowo, Zasada pojedynczej odpowiedzialności zakłada, że każda klasa powinna mieć jedną, jasno określoną odpowiedzialność, co pozwala na łatwiejsze testowanie i modyfikowanie kodu bez wpływu na inne jego części. Użycie zasad SOLID w praktyce prowadzi do lepszego rozdzielenia logiki aplikacji i ułatwia jej rozwój oraz utrzymanie, co jest kluczowe w długoterminowych projektach programistycznych.

Pytanie 37

Które z poniższych NIE jest typem wartości zwracanej przez funkcję w języku JavaScript?

A. Method
B. Undefined
C. Object
D. Number

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
W języku JavaScript funkcje mogą zwracać różne typy wartości, takie jak obiekty, liczby czy typ undefined. Wśród wymienionych opcji, 'Method' nie jest typem wartości zwracanej przez funkcję. W rzeczywistości, metoda w JavaScript to funkcja przypisana do obiektu. Jeżeli definiujemy funkcję wewnątrz obiektu, to możemy ją nazwać metodą tego obiektu, ale nie jest to typ wartości. Przykładowo, jeżeli mamy obiekt o nazwie 'person' i metodę 'greet', która zwraca powitanie: const person = { name: 'Jan', greet: function() { return 'Cześć, ' + this.name; } }; W powyższym przypadku, 'greet' jest metodą, ale jej wartością zwracaną jest typ string, co jest typowym zachowaniem funkcji. Dobrą praktyką jest zrozumienie różnicy między funkcjami a ich zastosowaniami w obiektach, co pozwala na lepsze projektowanie kodu oraz ukierunkowanie na zasady programowania obiektowego, które są kluczowe w JavaScript.

Pytanie 38

Które narzędzie służy do zarządzania zależnościami w projekcie JavaScript?

A. docker
B. postman
C. git
D. npm

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
npm, czyli Node Package Manager, jest kluczowym narzędziem w ekosystemie JavaScript, którego głównym celem jest zarządzanie zależnościami projektów. Umożliwia to instalowanie, aktualizowanie oraz usuwanie paczek (modułów), które są niezbędne do budowy aplikacji. Przykładowo, jeśli twój projekt wymaga biblioteki React, możesz ją łatwo zainstalować za pomocą polecenia `npm install react`, co automatycznie dodaje ją do pliku 'package.json', co ułatwia późniejsze zarządzanie wersjami. Dodatkowo, npm wspiera skrypty, co pozwala na automatyzację wielu procesów, takich jak testowanie czy budowanie aplikacji. Stosowanie npm jest zgodne z najlepszymi praktykami, ponieważ pozwala na utrzymanie spójności w projekcie oraz ułatwia współpracę zespołową, ułatwiając innym programistom instalowanie tych samych zależności w identycznych wersjach. Obecnie npm jest standardem wśród menedżerów pakietów dla JavaScript, co czyni go niezbędnym narzędziem dla każdego developera.

Pytanie 39

W języku C++, zakładając, że przedstawiony fragment kodu poprawnie się skompiluje i zostanie wykonany, to zmiennej liczba przypisana zostanie wartość:

int liczba = rand() % 1000;
A. równa 1000
B. dowolna pseudolosowa z przedziału typu int
C. rzeczywista podzielna przez 1000
D. pseudolosowa nie większa niż 999

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Linia kodu int liczba = rand() % 1000; w języku C++ używa funkcji rand() do generowania liczby pseudolosowej. Funkcja ta zwraca liczbę całkowitą z zakresu od 0 do RAND_MAX zdefiniowanego w standardowej bibliotece C++. Obliczenie rand() % 1000 wykonuje operację modulo na wygenerowanej liczbie, co oznacza, że wynik zawsze będzie liczbą z zakresu od 0 do 999. Jest to powszechna technika używana do ograniczenia zakresu wartości zwracanych przez funkcję rand() do konkretnego przedziału. Takie podejście jest często wykorzystywane do generowania pseudolosowych wartości całkowitych w określonym zakresie, co jest przydatne w wielu zastosowaniach, od prostych programów testowych po bardziej złożone aplikacje symulacyjne. Należy pamiętać, że funkcja rand() generuje liczby pseudolosowe, co oznacza, że sekwencja liczb będzie się powtarzać przy każdym uruchomieniu programu, chyba że zostanie zainicjowana za pomocą funkcji srand() z unikalnym ziarnem. Jest to zgodne z dobrymi praktykami, aby zapewnić różnorodność w generowanych liczbach pseudolosowych, zwłaszcza w kontekście testowania i symulacji komputerowych.

Pytanie 40

W jaki sposób można załadować tylko komponent z biblioteki React?

A. import Component from 'react'
B. import React.Component from 'react'
C. import { Component } from 'react'
D. import [ Component ] from 'react'

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Użycie składni import { Component } from 'react' to zdecydowanie najczęściej spotykany i najbardziej rekomendowany sposób importowania tylko wybranego komponentu z biblioteki React. To tzw. import nazwany, czyli dokładnie wskazujesz, który kawałek kodu chcesz wyciągnąć z całego modułu. W praktyce, jest to bardzo czytelne i pozwala na jasne zarządzanie zależnościami w pliku. Moim zdaniem ma to ogromne znaczenie w większych projektach, bo łatwo potem znaleźć, które elementy są faktycznie wykorzystywane w danym pliku. Co ważne, taka technika importowania jest w pełni zgodna ze standardami ES6, właściwie każdy nowoczesny projekt front-endowy na tym bazuje. Przykład praktyczny: jeśli chcesz stworzyć klasowy komponent React, wystarczy napisać import { Component } from 'react', a potem class MyClass extends Component {...}. Jest to nieco bardziej eleganckie niż importowanie całego obiektu React (np. import React from 'react'), zwłaszcza jeśli nie potrzebujesz całej funkcjonalności. Dodatkowo, takie rozwiązanie może wpływać pozytywnie na bundlowanie kodu, bo nie ściągasz do projektu niepotrzebnych fragmentów biblioteki. Swoją drogą, coraz częściej widać, że programiści skupiają się na minimalizowaniu importów i czytelności kodu – właśnie przez wybór takich rozwiązań.