Wyniki egzaminu

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

Egzamin zdany!

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

Które z wymienionych stanowi przykład struktury dziedziczenia?

A. Klasa Pojazd nie dziedziczy z żadnej klasy
B. Klasa Pojazd ma dziedziczenie od klasy Samochód
C. Klasa Samochód ma dziedziczenie od klasy Pojazd
D. Klasa Samochód i Pojazd nie są ze sobą powiązane
Hierarchia dziedziczenia to struktura klas, w której klasa pochodna dziedziczy właściwości i metody klasy bazowej. Klasa 'Samochód' dziedzicząca po klasie 'Pojazd' jest przykładem prawidłowej hierarchii dziedziczenia – klasa 'Samochód' rozszerza klasę 'Pojazd', dziedzicząc ogólne właściwości pojazdu, takie jak prędkość czy typ silnika. Dziedziczenie umożliwia rozszerzanie istniejącej funkcjonalności bez konieczności przepisywania tego samego kodu, co jest jednym z fundamentów programowania obiektowego.

Pytanie 2

Jaki środek ochronny najlepiej chroni przed hałasem w biurze?

A. Mata antypoślizgowa
B. Lampy biurowe o niskim poziomie natężenia światła
C. Panele akustyczne wygłuszające
D. Okna zamknięte
Wygłuszające panele akustyczne to jedno z najlepszych rozwiązań w celu ograniczenia hałasu w biurach i innych miejscach pracy. Panele te redukują odbicia dźwięku i zmniejszają natężenie hałasu, co przekłada się na poprawę koncentracji oraz zmniejszenie zmęczenia i stresu. W biurach typu open space panele akustyczne znacząco poprawiają komfort pracy, umożliwiając prowadzenie rozmów bez nadmiernego zakłócania pracy innych osób. Dodatkowo, wygłuszenie pomaga w ochronie zdrowia pracowników, redukując ryzyko utraty słuchu w miejscach, gdzie występuje wysoki poziom hałasu. Odpowiednie rozmieszczenie paneli pozwala także na lepsze zarządzanie akustyką całego pomieszczenia.

Pytanie 3

W zamieszczonym fragmencie kodu Java wskaż nazwę zmiennej, która może przechować wartość 'T'.

int zm1;
float zm2;
char zm3;
boolean zm4;
A. zm4
B. zm1
C. zm3
D. zm2
Poprawnie wskazana została zmienna 'zm3', której typ to 'char'. To właśnie zmienne typu 'char' w Javie służą do przechowywania pojedynczych znaków, takich jak na przykład litera 'T'. Zmienna 'char' przechowuje znak jako wartość liczbową zgodnie z kodowaniem Unicode, co pozwala na obsługę szerokiego zakresu znaków z różnych alfabetów. W praktyce często spotyka się sytuacje, gdzie potrzebujemy przechować czy odczytać pojedynczy znak – np. literę przy przetwarzaniu tekstu, analizowaniu plików, czy nawet w prostych grach tekstowych, gdzie np. sterowanie postacią opiera się o pojedyncze litery wciskane na klawiaturze. Moim zdaniem dobre zrozumienie typu 'char' to podstawa, bo łatwo pomylić go z typem 'String', który przechowuje jednak całe ciągi znaków, a nie pojedyncze znaki. Z punktu widzenia dobrych praktyk, zawsze warto dobierać możliwie najwęższy typ danych do zadania – jeżeli chcemy przechować jedną literę, typ 'char' jest po prostu najefektywniejszy. Nawiasem mówiąc, w Javie znak umieszczamy w pojedynczych apostrofach (np. 'T'), co jednoznacznie odróżnia je od tekstów (podwójne cudzysłowy). Osobiście zdarzało mi się kiedyś pomylić te typy i potem szukać błędów, więc warto zapamiętać tę różnicę. Warto też wiedzieć, że typ 'char' przydaje się np. do operacji na znakach w tablicach, przy konwersjach kodów ASCII czy nawet szyfrowaniu prostych tekstów. Zdecydowanie jest to typ, którego nie można pominąć w nauce Javy.

Pytanie 4

Co to jest API w kontekście programowania?

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

Jakie jest główne zadanie portali społecznościowych?

A. Udostępnianie informacji i interakcja między użytkownikami
B. Analiza rezultatów działalności gospodarczej
C. Tworzenie kopii zapasowych plików
D. Zarządzanie handlem produktami i usługami
Główna funkcja portali społecznościowych polega na umożliwieniu użytkownikom tworzenia, udostępniania oraz wymiany treści, a także komunikacji w czasie rzeczywistym. Portale takie jak Facebook, Twitter czy Instagram pozwalają na interakcję poprzez posty, komentarze, polubienia oraz wiadomości prywatne. Użytkownicy mogą dzielić się zdjęciami, filmami, artykułami lub osobistymi przemyśleniami, co sprzyja budowaniu społeczności i nawiązywaniu relacji. Funkcjonalności te są zgodne z najlepszymi praktykami UX/UI, które kładą nacisk na intuicyjność i łatwość obsługi. W kontekście SEO, portale społecznościowe są także ważne ze względu na możliwość generowania ruchu na zewnętrzne strony internetowe poprzez linki i udostępnienia. Przykładem może być wykorzystanie platformy Instagram do promocji produktów, gdzie użytkownicy mogą kliknąć w linki do sklepu. Takie działania zwiększają widoczność marki w Internecie oraz angażują odbiorców, co jest kluczowe dla efektywnej strategii marketingowej.

Pytanie 6

Wynik dodawania liczb binarnych 1101 i 1001 to

A. 1110
B. 1001
C. 10111
D. 10110
Dodając liczby binarne 1101 i 1001, otrzymujemy wynik 10110. Wynika to z zasad dodawania bitów, gdzie sumujemy od prawej do lewej, pamiętając o przeniesieniu, gdy suma przekracza 1 (czyli tak jakby pojawia się „dwójka” w systemie dziesiętnym). Tutaj: 1+1=0 i przeniesienie 1, później 0+0+1=1, dalej 1+0=1, potem 1+1=0 i znowu przeniesienie 1, ostatni przeniesiony bit daje nam 1 na początku, więc cały wynik to 10110. Taki sposób sumowania jest podstawą działania procesorów – praktycznie w każdym sprzęcie elektronicznym obliczenia wykonują się właśnie binarnie. To nie tylko teoria – gdy programujesz mikrokontrolery albo pracujesz z układami cyfrowymi, te operacje to chleb powszedni. Moim zdaniem warto ogarnąć ten temat, bo dzięki temu łatwiej zrozumiesz działanie sumatorów w logice cyfrowej czy nawet podstawowe algorytmy komputerowe. W branży IT umiejętność szybkiego przeliczenia binarnego to raczej podstawa, szczególnie jak zabierasz się za elektronikę czy programowanie niskopoziomowe. Dla przykładu – większość protokołów sieciowych, maski IP itp. opiera się właśnie na operacjach binarnych, więc znajomość tego tematu zdecydowanie się przydaje. Poza tym, zgodnie z normami opisu algorytmów (np. IEEE), operacje na bitach są podstawową abstrakcją w projektowaniu sprzętu i oprogramowania.

Pytanie 7

Jakie są różnice między typem łańcuchowym a typem znakowym?

A. Typ znakowy przechowuje pojedyncze znaki, a łańcuchowy ciągi znaków
B. Typ łańcuchowy przechowuje pojedyncze znaki, a znakowy długie ciągi znaków
C. Typ łańcuchowy obsługuje liczby całkowite, a znakowy liczby zmiennoprzecinkowe
D. Typ znakowy przechowuje dane logiczne, a łańcuchowy tekst
Typ znakowy (char) przechowuje pojedyncze znaki, natomiast typ łańcuchowy (string) przechowuje ciągi znaków. Różnica ta ma kluczowe znaczenie w programowaniu, ponieważ typ 'char' jest używany do operacji na pojedynczych literach, cyfrze lub symbolu, podczas gdy 'string' umożliwia przechowywanie i manipulowanie całymi wyrazami lub zdaniami. W wielu językach 'string' to bardziej złożona struktura danych, która zawiera tablicę znaków (array of characters), co pozwala na efektywną pracę z tekstem i budowanie interaktywnych aplikacji.

Pytanie 8

Co to jest ORM w kontekście programowania?

A. Operational Reliability Management - zarządzanie niezawodnością operacyjną systemów
B. Organized Resource Model - model organizacji zasobów w aplikacjach webowych
C. Output Rendering Module - moduł renderujący dane wyjściowe w aplikacjach
D. Object-Relational Mapping - technika konwersji danych między systemami typów w relacyjnych bazach danych
W kontekście programowania istnieje wiele terminów i technik, które mogą wprowadzać w błąd, jeśli zostaną źle zrozumiane. Na przykład, 'Operational Reliability Management' odnosi się do zarządzania niezawodnością operacyjną systemów, co jest ważne, ale nie ma bezpośredniego związku z koncepcją ORM, ponieważ skupia się na zapewnieniu ciągłości działania systemów i minimalizacji przestojów. Kolejna koncepcja, 'Organized Resource Model', sugeruje modelowanie zasobów w aplikacjach webowych, co również nie odnosi się do techniki ORM. ORM skupia się na konwersji danych między obiektami a relacyjnymi bazami danych, a nie na organizacji zasobów. Wreszcie, 'Output Rendering Module' to termin związany z wyświetlaniem danych, co również nie jest związane z ORM, który nie zajmuje się renderowaniem, a jedynie mapowaniem danych. Kluczowym błędem myślowym jest mylenie celów różnych technik i narzędzi w programowaniu. Zrozumienie, że ORM jest konkretną techniką konwersji danych, a nie zarządzania operacyjnego lub modelowania zasobów, to fundament, który pozwala właściwie zinterpretować jego zastosowanie w praktyce programistycznej. Właściwa znajomość tych terminów oraz umiejętność rozróżnienia ich funkcji jest kluczowa w profesjonalnym programowaniu, by unikać nieporozumień i wdrażać odpowiednie rozwiązania w projektach informatycznych.

Pytanie 9

W jakim celu wykorzystuje się diagram Gantta?

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

Jakie środowisko developerskie służy do tworzenia aplikacji na platformę iOS?

A. Visual Studio Code
B. Eclipse
C. XCode
D. Studio Androida
XCode to oficjalne środowisko programistyczne (IDE) firmy Apple, które jest wykorzystywane do tworzenia aplikacji na systemy iOS, macOS, watchOS i tvOS. XCode oferuje pełne wsparcie dla języków Swift i Objective-C oraz narzędzia do projektowania interfejsów użytkownika (Storyboard), debugowania aplikacji, testowania wydajności i optymalizacji kodu. XCode posiada także symulatory urządzeń Apple, co umożliwia testowanie aplikacji na różnych modelach iPhone’ów, iPadów oraz Apple Watch. XCode jest niezbędnym narzędziem dla deweloperów tworzących aplikacje na ekosystem Apple i pozwala na łatwą publikację aplikacji w App Store.

Pytanie 11

Jakie są różnice między konstruktorem a zwykłą metodą w klasie?

A. Konstruktor powinien zwracać jakąś wartość
B. Konstruktor zawsze nosi tę samą nazwę co klasa i nie zwraca wartości
C. Konstruktor można wywołać bez konieczności tworzenia obiektu
D. Konstruktor jest uruchamiany jedynie przez destruktor
Konstruktor różni się od zwykłych metod klasy tym, że nosi taką samą nazwę jak klasa i nie zwraca żadnej wartości, nawet `void`. Konstruktor jest wywoływany automatycznie podczas tworzenia obiektu i nie można go wywołać ręcznie jak zwykłą metodę. Jego zadaniem jest inicjalizacja pól obiektu i przygotowanie go do działania. Przykład w C++: `class Samochod { public: Samochod() { marka = "Ford"; } }`. W przeciwieństwie do innych metod konstruktor nie wymaga deklaracji typu zwracanego, co jest jedną z jego najbardziej charakterystycznych cech.

Pytanie 12

W zestawieniu zaprezentowano doświadczenie zawodowe pracowników firmy IT. Do stworzenia aplikacji front-end powinien/powinna zostać wyznaczony/a

PracownikZnajomość technologii lub programów
AnnaInkscape, Corel Draw
KrzysztofAngular
PatrykHTML, CSS
EwaDjango, .NET
A. Ewa
B. Krzysztof
C. Patryk
D. Anna
Krzysztof to naprawdę świetny wybór na budowę aplikacji front-end, bo zna Angulara, który jest jednym z najpopularniejszych frameworków do aplikacji jednostronicowych. Dzięki Angularowi można tworzyć dynamiczne i responsywne interfejsy, co jest mega ważne w projektach front-end. Ogólnie rzecz biorąc, ten framework opiera się na komponentach, co zdecydowanie ułatwia pracę z kodem i pozwala na jego ponowne wykorzystanie. W połączeniu z TypeScriptem, Angular daje duże możliwości, bo mocne typowanie zmniejsza ryzyko błędów i poprawia czytelność kodu. Zrozumienie, jak działa aplikacja i jakie są dobre praktyki, takie jak modularność czy testowanie, też jest istotne, żeby wykorzystać Angulara w pełni. Krzysztof ma tę wiedzę i potrafi wdrażać najlepsze praktyki, jak architektura MVC, co sprawia, że aplikacje są bardziej skalowalne i łatwiejsze w utrzymaniu. Dodatkowo, Angular robi też sporo, żeby aplikacje działały szybko, co jest ważne dla doświadczenia użytkownika. Dlatego wybierając Krzysztofa, mamy pewność, że projekt będzie zgodny z nowymi standardami i spełni oczekiwania użytkowników w zakresie interfejsu.

Pytanie 13

Celem mechanizmu obietnic (ang. promises) w języku JavaScript jest

A. zarządzanie przechwytywaniem błędów aplikacji
B. zastąpienie mechanizmu dziedziczenia w programowaniu obiektowym
C. zarządzanie funkcjonalnością związaną z kodem asynchronicznym
D. ulepszenie czytelności kodu synchronicznego
Mechanizm obietnic (promises) w JavaScript to, moim zdaniem, jedno z najważniejszych udogodnień, które pojawiły się w języku, żeby ogarnąć cały ten chaos wokół asynchroniczności. Typowa sytuacja kiedyś wyglądała tak, że w kodzie robiło się „callback hell” – zagnieżdżone funkcje wywołujące się nawzajem, co mocno utrudniało życie. Promise pozwala na o wiele czytelniejsze i wygodniejsze zarządzanie operacjami, które kończą się „kiedyś”, np. pobieraniem danych z API, zapisem do pliku, czy czekaniem na odpowiedź użytkownika. Z mojego doświadczenia wynika, że dzięki promises jest dużo łatwiej obsłużyć zarówno sukces, jak i błędy – możesz skorzystać z then(), catch(), a nawet łańcuchować kilka asynchronicznych zadań bez gubienia się w kodzie. Szczególnie przydatne jest to w pracy z fetch(), gdzie bez promises cała obsługa sieci wyglądałaby strasznie topornie. Dodatkowo promises są w pełni zgodne ze standardem ECMAScript 2015 (ES6) i stanowią podstawę dla nowocześniejszych rozwiązań, takich jak async/await. Praktycznie każdy zawodowy frontendowiec czy backendowiec pracujący z Node.js powinien je znać, bo to już nie fanaberia, a codzienność. Dobra praktyka to właśnie korzystanie z promises tam, gdzie tylko mamy do czynienia z nieblokującymi operacjami. Takie podejście nie tylko poprawia czytelność kodu, ale znacząco ułatwia jego utrzymanie i debugowanie.

Pytanie 14

Jaką wartość będzie miała zmienna result po wykonaniu poniższego kodu PHP?

$array = [5, 1, 8, 3, 7];
$result = 0;
foreach ($array as $value) {
  if ($value > $result) {
    $result = $value;
  }
}
A. 7
B. 24
C. 8
D. 5
Wartość zmiennej result po wykonaniu podanego kodu PHP wynosi 8, ponieważ kod ten ma na celu znalezienie największej liczby w tablicy. Zmienna $result jest początkowo ustawiona na 0, co oznacza, że każda liczba z tablicy, która jest większa od zera, zostanie przypisana do $result. W trakcie iteracji przez tablicę $array, każdy element jest porównywany z bieżącą wartością $result. Kiedy napotykamy wartość 5, która jest większa od 0, zmienna $result zostaje zaktualizowana do 5. Następnie porównujemy 1, co nie zmienia $result. Kiedy napotykamy 8, zmienna $result jest aktualizowana do 8, ponieważ 8 jest większe od 5. Kolejne wartości 3 i 7 również nie zmieniają $result, ponieważ są mniejsze od 8. Po zakończeniu pętli, $result pozostaje równe 8, co jest największą wartością w tablicy. To podejście jest zgodne z dobrymi praktykami programistycznymi, gdzie używa się pętli do przetwarzania kolekcji danych w sposób optymalny i przejrzysty.

Pytanie 15

W obrębie klasy pracownik zdefiniowano następujące metody:

pracownik() { ... }
static void wypisz() { ... }
int operator== (const pracownik &prac) { ... }
~pracownik() { ... }
Którą z nich można, zgodnie z jej funkcją, rozszerzyć o element diagnostyczny o treści:
cout << "Obiekt został usunięty";
A. wypisz
B. pracownik
C. ~pracownik
D. operator==
Wybranie destruktora ~pracownik do umieszczenia komunikatu diagnostycznego o usunięciu obiektu jest jak najbardziej słuszne i zgodne z praktykami programowania obiektowego w C++. To właśnie destruktor odpowiada za wykonywanie wszelkich czynności „na pożegnanie” obiektu, czyli w momencie jego zwalniania z pamięci. Właśnie tu umieszcza się takie rzeczy jak logowanie faktu usunięcia, czyszczenie zasobów zewnętrznych czy zwalnianie pamięci dynamicznej. W praktyce, gdy zadeklarujemy cout << "Obiekt został usunięty"; w destruktorze, będziemy mieli jasny sygnał przy każdym końcu życia obiektu, co świetnie nadaje się do diagnostyki i szukania błędów w zarządzaniu pamięcią. Moim zdaniem każdy programista, nawet początkujący, powinien chwilę pobawić się takimi komunikatami, żeby lepiej zrozumieć, kiedy dokładnie destruktor jest wołany (np. przy wyjściu ze scope’u, delete, końcu programu itp.). To też dobry sposób, żeby wychwycić niechciane wycieki pamięci lub zrozumieć, dlaczego obiekt nie został jeszcze usunięty. Wzorce projektowe, takie jak RAII, wręcz opierają się na działaniu destruktorów. W branży często stosuje się podobne rozwiązania do debugowania problematycznych fragmentów kodu. Ogólnie rzecz biorąc, umieszczanie komunikatów w destruktorze jest praktycznym i polecanym sposobem na rozpoznanie cyklu życia obiektu – i to w każdej większej aplikacji C++.

Pytanie 16

Wskaź kod, który spowoduje wyświetlenie okna dialogowego przedstawionego na ilustracji. Dla uproszczenia kodu, zrezygnowano z atrybutów znaczników

Ilustracja do pytania
A. kod 2
B. kod 1
C. kod 4
D. kod 3
Odpowiedź, którą wybrałeś, to kod 2, i nie ma co do tego wątpliwości. Dobrze, że zauważyłeś wszystkie elementy, które były w oknie dialogowym. W tym kodzie masz TextBox na górze, który pozwala na wpisanie tekstu. Dwa CheckBoxy po lewej stronie to te typowe pola wyboru, które też były widoczne. Po prawej stronie masz trzy RadioButtony, które tworzą grupę przycisków - to jest właśnie to, co powinno być. Na dole widoczny jest przycisk Button z napisem Test, co też jest zgodne z obrazkiem. Takie rozmieszczenie to klucz do stworzenia dobrego interfejsu. Wiesz, w praktyce w wielu aplikacjach używa się właśnie tych elementów do prostych formularzy. Jeżeli rozumiesz, jak te komponenty działają i jak je ze sobą łączyć, to naprawdę dobrze ci to pójdzie w przyszłości w tworzeniu ładnych i funkcjonalnych interfejsów.

Pytanie 17

Jakie znaczenie ma framework w kontekście programowania?

A. Program do graficznego projektowania interfejsów użytkownika
B. System operacyjny, który umożliwia uruchamianie aplikacji
C. Zbiór gotowych bibliotek, narzędzi i zasad ułatwiających tworzenie aplikacji
D. Moduł do zarządzania systemami baz danych
Framework to zbiór gotowych bibliotek, narzędzi i reguł, które wspierają tworzenie aplikacji poprzez dostarczanie struktury ułatwiającej pracę programistów. Frameworki definiują standardowe komponenty aplikacji, umożliwiając programistom skoncentrowanie się na logice biznesowej zamiast na podstawowej architekturze aplikacji. Przykłady popularnych frameworków to .NET, Angular, Django i Spring. Frameworki przyspieszają proces programowania, poprawiają jakość kodu i wspierają skalowalność aplikacji, co czyni je nieodłącznym elementem nowoczesnego programowania.

Pytanie 18

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

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

Pytanie 19

Która z poniższych metod HTTP służy do aktualizacji zasobu?

A. GET
B. POST
C. PUT
D. DELETE
Metoda GET jest używana do pobierania danych z serwera, a nie do ich modyfikacji. Często błędnie uważa się, że ponieważ GET może zwracać aktualne dane, to można go użyć do aktualizacji zasobów. Jednakże, zgodnie z zasadami HTTP, GET nie powinien mieć żadnych efektów ubocznych na serwerze, co oznacza, że nie zmienia stanu zasobów. Z kolei metoda POST jest zazwyczaj używana do tworzenia nowych zasobów, a nie do ich aktualizacji. Choć można jej użyć do przesyłania danych, które następnie prowadzą do aktualizacji, nie jest to jej pierwotny cel. POST generuje nowe zasoby i w rezultacie nie jest idempotentny, co oznacza, że wielokrotne użycie tej samej operacji prowadzi do różnych rezultatów. Metoda DELETE, jak sama nazwa wskazuje, służy do usuwania zasobów, a nie ich aktualizacji. Wybierając niewłaściwe metody HTTP, można wprowadzić chaos w interfejsie API, co prowadzi do błędnych operacji oraz trudności w zarządzaniu zasobami. Dlatego ważne jest, aby dobrze zrozumieć, jakie są różnice między tymi metodami oraz jak właściwie je stosować w praktyce programistycznej, aby zapewnić zgodność z najlepszymi praktykami oraz standardami branżowymi.

Pytanie 20

Jaką rolę odgrywa destruktor w definicji klasy?

A. Usuwa instancje i zwalnia pamięć
B. Realizuje testy jednostkowe klasy
C. Generuje nowe instancje klasy
D. Ustawia wartości pól klasy
Destruktor to specjalna metoda klasy, która jest automatycznie wywoływana w momencie, gdy obiekt przestaje być używany. Jego zadaniem jest zwalnianie zasobów, takich jak pamięć dynamiczna, uchwyty do plików lub połączenia sieciowe. Destruktor ma tę samą nazwę co klasa, poprzedzoną symbolem `~` w C++ (`~Samochod()`). Destruktor zapobiega wyciekom pamięci i zapewnia, że wszystkie zasoby są poprawnie zwalniane po zakończeniu pracy obiektu. Jest to kluczowy element zarządzania cyklem życia obiektu w językach takich jak C++.

Pytanie 21

Jakie znaczenie ma termin "hierarchia dziedziczenia" w kontekście programowania obiektowego?

A. Zespół metod i pól posiadających ten sam modyfikator dostępu
B. Układ klas, który ogranicza występowanie dziedziczenia wielokrotnego
C. Zbiór klas, które nie mają wspólnych powiązań
D. Układ klas w strukturę, w której klasy pochodne dziedziczą cechy od klas bazowych
Hierarchia dziedziczenia to fundamentalna koncepcja programowania obiektowego, polegająca na organizacji klas w strukturę, w której klasy pochodne dziedziczą właściwości (pola i metody) od klas bazowych. Pozwala to na wielokrotne wykorzystanie kodu, co zwiększa jego modularność i zmniejsza redundancję. Klasa bazowa dostarcza ogólne cechy i metody, podczas gdy klasy pochodne rozszerzają lub modyfikują tę funkcjonalność, dostosowując ją do bardziej specyficznych wymagań. Przykładem jest klasa 'Pojazd', po której mogą dziedziczyć klasy 'Samochód' i 'Motocykl', zachowując wspólne atrybuty, takie jak 'maksymalna prędkość' czy 'masa'.

Pytanie 22

Wskaż typy numeryczne o stałej precyzji

A. long long, long double
B. bool char, string
C. int, short, long
D. float, double
Typy numeryczne o stałej precyzji (czyli tzw. typy całkowite) to na przykład int, short, long – dokładnie te, które wskazałeś. Działają one trochę jak liczniki – przechowują liczby całkowite w określonym zakresie, bez przecinka. Moim zdaniem to podstawa, jeśli chodzi o reprezentowanie wartości typu liczba sztuk, indeks, identyfikator – wszędzie tam, gdzie nie potrzebujemy części ułamkowej. Ich precyzja wynika z tego, że są zdefiniowane w standardzie (np. w C++ czy Javie) jako liczby całkowite reprezentowane przez określoną liczbę bitów. Dla przykładu, 32-bitowy int zawsze pomieści wartości od -2 147 483 648 do 2 147 483 647 i każdy bit jest tu ważny. W praktyce, programując mikrokontrolery albo systemy wbudowane, właściwy wybór typu o stałej precyzji potrafi decydować o stabilności i wydajności całego programu. Warto też wiedzieć, że typy te – int, short, long – nie mają błędu zaokrągleń, co często zdarza się przy operacjach na liczbach zmiennoprzecinkowych. No i jeszcze takie małe spostrzeżenie: dobrym zwyczajem jest wybieranie najmniejszego typu całkowitego, który pokryje wymagany zakres, żeby zoptymalizować zużycie pamięci. Takie podejście mocno się przydaje, zwłaszcza jak się pracuje nad większym projektem, gdzie każda optymalizacja jest na wagę złota.

Pytanie 23

Jaką wartość zwróci funkcja napisana w języku C++, jeżeli jej argumentem wejściowym jest tablica stworzona w następujący sposób:

int tablica[6] = {3,4,2,4,10,0};

int fun1(int tab[]) {
    int wynik = 0;

    for(int i = 0; i < 6; i++)
        wynik += tab[i];
    return wynik;
}
A. 0
B. 23
C. 20
D. 10
Rozwiązując takie zadania, warto nauczyć się dokładnie patrzeć na strukturę kodu. Funkcja fun1 przyjmuje tablicę intów i sumuje jej elementy. Tu pętla for przechodzi po wszystkich sześciu indeksach – od 0 do 5. Gdy podmienisz na liczby z zadania: 3, 4, 2, 4, 10 oraz 0 – po prostu dodajesz te wartości do siebie. Suma wychodzi 23. Czyli wynik funkcji to właśnie 23. To taki bardzo typowy przykład sumowania elementów tablicy – nie tylko na lekcjach, ale praktycznie wszędzie, np. jak liczysz sumę zamówień w sklepie internetowym albo punkty gracza w grze. Jeśli chodzi o dobre praktyki w C++, to warto wiedzieć, że lepiej przekazywać tablicę z dodatkowym parametrem długości, żeby nie robić magicznych liczb jak to '6' w pętli – można się wtedy łatwo pomylić przy zmianie rozmiaru. Moim zdaniem dobrze jest od razu przyswoić sobie nawyk wykorzystywania std::vector zamiast „gołych” tablic, bo są bezpieczniejsze i elastyczniejsze. To już taki krok w stronę kodu produkcyjnego. Ale podsumowując – jeśli widzisz tak napisany kod, to zawsze patrz, ile razy pętla się wykona i jakie są wartości w tablicy. Tylko tyle i aż tyle. W praktyce ta umiejętność przekłada się na szybkie debugowanie i pisanie niezawodnych programów.

Pytanie 24

W przedstawionym filmie ukazano kreator interfejsu użytkownika, dla którego automatycznie powstaje

A. obsługa przycisku ekranu dotykowego
B. kod XML
C. kod Java
D. obsługa wciśniętego przycisku
Kod XML jest obecnie najczęściej stosowanym formatem do definiowania wyglądu interfejsów użytkownika w takich narzędziach jak Android Studio czy różnego rodzaju designery graficzne. Kiedy projektujesz layout aplikacji mobilnej albo desktopowej, duża część nowoczesnych narzędzi tworzy właśnie pliki XML, które następnie są interpretowane przez system w czasie uruchamiania aplikacji. Ułatwia to rozdzielenie logiki aplikacji od jej prezentacji, co wydaje się fundamentalne przy większych projektach. Moim zdaniem takie podejście daje ogromne korzyści – można łatwo modyfikować wygląd bez dotykania kodu źródłowego. W praktyce, jeśli używasz np. Android Studio, zbudujesz interfejs przeciągając przyciski czy pola tekstowe, a pod spodem dostaniesz czytelny plik XML. To przyspiesza pracę, zwiększa czytelność projektu i pozwala na późniejsze automatyczne generowanie dokumentacji albo testów interfejsu. Takie standardy są rekomendowane nie tylko przez Google, ale też szeroko stosowane w innych środowiskach, jak chociażby XAML w Microsoft czy FXML w JavaFX. Przezroczystość działania tych narzędzi sprawia, że łatwiej jest pracować zespołowo, bo każdy może szybko zorientować się w strukturze UI patrząc na XML-a. Samo generowanie kodu XML przez narzędzia graficzne to duży krok w kierunku lepszej organizacji pracy i zgodności ze współczesnymi praktykami branżowymi.

Pytanie 25

Który z wymienionych mechanizmów pozwala na monitorowanie stanu użytkownika w trakcie sesji w aplikacji internetowej?

A. HTTP Headers
B. Sesje (Sessions)
C. CSS Selectors
D. HTML Forms
Sesje (sessions) to mechanizm wykorzystywany w aplikacjach webowych do śledzenia stanu użytkownika podczas sesji przeglądania. Sesje umożliwiają przechowywanie danych użytkownika na serwerze przez określony czas i identyfikowanie go za pomocą unikalnego identyfikatora (session ID), który jest zwykle przechowywany w ciasteczkach. Mechanizm sesji pozwala na implementację logowania, koszyków zakupowych oraz innych funkcji, które wymagają zachowania stanu między żądaniami HTTP. Sesje są kluczowe dla aplikacji wymagających autoryzacji i autentykacji, ponieważ umożliwiają śledzenie działań użytkownika bez konieczności wielokrotnego logowania. Zastosowanie sesji w aplikacjach zwiększa bezpieczeństwo i poprawia komfort użytkowania, a także umożliwia personalizację treści w czasie rzeczywistym.

Pytanie 26

Jakie działanie powinno się wykonać w pierwszym kroku, oceniając stan osoby poszkodowanej?

A. Wezwać ambulans
B. Sprawdzić, czy występuje krwawienie
C. Rozpocząć resuscytację krążeniowo-oddechową
D. Zadbać o własne bezpieczeństwo
Właśnie o to chodzi — zadbanie o własne bezpieczeństwo jako pierwszy krok to fundament całej pierwszej pomocy i temat, który się często przecenia, a moim zdaniem jest kluczowy. Chodzi o to, że nawet najlepsze chęci nie mają sensu, jeśli ratujący sam staje się kolejną ofiarą. W praktyce oznacza to, że zanim podejdziesz do poszkodowanego, musisz się zastanowić, czy miejsce wypadku jest bezpieczne. Przykładowo na drodze – trzeba rozejrzeć się, czy nie nadjeżdżają inne samochody, zabezpieczyć teren (trójkąt ostrzegawczy, kamizelka odblaskowa). W przypadku porażenia prądem – odłączyć źródło napięcia. To wcale nie są banały; tego uczą na wszystkich kursach BLS (Basic Life Support) i w zasadzie każda książka ratownicza stawia to na pierwszym miejscu. Często się o tym zapomina, bo emocje biorą górę. Prawda jest taka, że każda akcja ratunkowa zaczyna się od sekundy refleksji: czy ja tu jestem bezpieczny? Dopiero później można oceniać stan poszkodowanego i dalej działać. W sumie jak się o tym pomyśli, to takie myślenie ratuje zdrowie nie tylko nam, ale i tym, którym chcemy pomóc — bo nie zwiększamy liczby poszkodowanych. Niektórym wydaje się, że od razu trzeba robić masaż serca czy wołać karetkę, ale bez oceny zagrożenia można narobić sobie i innym więcej problemów. Takie są realia pracy w terenie, nie tylko w teorii.

Pytanie 27

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 działa w tle, podczas gdy dialog niemodalny jest zawsze wyświetlany na pierwszym planie
C. Dialog modalny jest ograniczony wyłącznie do aplikacji konsolowych
D. Dialog modalny umożliwia interakcję z innymi oknami aplikacji, a dialog niemodalny tego nie pozwala
Stwierdzenie, że dialog modalny działa w tle, jest błędne – dialog modalny jest zawsze na pierwszym planie i blokuje interakcję z innymi oknami aplikacji. Niemodalny dialog to ten, który działa w tle i nie wymaga natychmiastowej reakcji użytkownika. Określenie, że dialog modalny pozwala na interakcję z innymi oknami aplikacji, to nieporozumienie – to właśnie dialog niemodalny umożliwia taką interakcję. Stwierdzenie, że dialog modalny jest ograniczony tylko do aplikacji konsolowych, jest błędne – dialogi modalne są powszechnie stosowane w aplikacjach desktopowych i graficznych, a nie w aplikacjach konsolowych, gdzie interakcja odbywa się głównie za pomocą tekstu.

Pytanie 28

Zasada programowania obiektowego, która polega na ukrywaniu elementów klasy tak, aby były one dostępne wyłącznie dla metod tej klasy lub funkcji zaprzyjaźnionych, to

A. dziedziczenie
B. wyjątki
C. hermetyzacja
D. polimorfizm
Hermetyzacja to taka esencja programowania obiektowego, która polega na ukrywaniu szczegółów implementacyjnych wewnątrz klasy. Dzięki temu tylko wybrane fragmenty kodu mają dostęp do danych czy metod, które faktycznie powinny być widoczne na zewnątrz. W praktyce sprowadza się to do korzystania z modyfikatorów dostępu, takich jak private, protected czy public, co jest podstawą w językach takich jak Java, C++ czy C#. Daje to ogromną przewagę, bo ochrania dane przed przypadkowymi (albo celowymi!) zmianami z zewnątrz. Z mojego doświadczenia wynika, że dobrze zaprojektowana hermetyzacja sprawia, że kod jest bardziej przejrzysty i łatwiejszy do testowania i utrzymania. Przykład? Załóżmy, że mamy klasę KontoBankowe i chcemy, żeby saldo dało się zmieniać tylko poprzez wpłatę i wypłatę, a nie żeby każdy mógł ustawić dowolną kwotę. Wtedy pole 'saldo' robimy private, a dostęp dajemy przez metody public wpłata() i wypłata(). Branżowe praktyki, np. SOLID, wręcz podkreślają wagę hermetyzacji. Ułatwia to też refaktoryzację – jeśli coś zmienisz w środku klasy, a interfejs zewnętrzny zostaje taki sam, reszta programu nawet nie zauważy. Także, moim zdaniem, bez hermetyzacji nie ma sensownego programowania obiektowego – to absolutna podstawa.

Pytanie 29

Jaką rolę odgrywa interpreter w kontekście programowania?

A. Zoptymalizowuje wydajność aplikacji w środowisku produkcyjnym
B. Przekłada kod źródłowy na język maszynowy w trakcie działania programu
C. Generuje plik wykonywalny dla systemu operacyjnego
D. Łączy kod źródłowy z zewnętrznymi bibliotekami
Interpreter tłumaczy kod źródłowy na język maszynowy instrukcja po instrukcji, co oznacza, że każda linia kodu jest analizowana i wykonywana na bieżąco. Dzięki temu programy interpretowane, takie jak te w Pythonie, Ruby czy JavaScript, mogą być szybko testowane i uruchamiane bez konieczności wcześniejszej kompilacji. Interpretacja pozwala na elastyczność w procesie rozwoju, ponieważ zmiany w kodzie są widoczne natychmiast po zapisaniu pliku. To czyni interpreter idealnym narzędziem do prototypowania i budowania aplikacji w dynamicznych środowiskach.

Pytanie 30

Jakie jest zastosowanie języka XAML przy tworzeniu aplikacji desktopowych?

A. Do optymalizacji działania aplikacji
B. Do zarządzania bazami danych
C. Do obsługi zdarzeń klawiatury
D. Do projektowania graficznego interfejsu użytkownika
XAML (Extensible Application Markup Language) to język znaczników wykorzystywany w technologii WPF (Windows Presentation Foundation) oraz UWP (Universal Windows Platform) do projektowania graficznego interfejsu użytkownika (GUI). XAML pozwala na definiowanie układów, przycisków, etykiet oraz innych elementów interaktywnych w aplikacjach desktopowych. Dzięki XAML, projektowanie interfejsu jest intuicyjne, a kod interfejsu jest oddzielony od logiki aplikacji, co sprzyja przejrzystości projektu. XAML wspiera animacje, style i szablony, co umożliwia budowę nowoczesnych, dynamicznych aplikacji. Jego elastyczność i możliwość współpracy z C# sprawiają, że XAML jest niezastąpiony w środowisku Windows.

Pytanie 31

Technika konstruowania algorytmu polegająca na rozbiciu na dwa lub więcej mniejszych podproblemów, aż do momentu, gdy ich części będą wystarczająco proste do bezpośredniego rozwiązania, nosi nazwę:

A. dziel i zwyciężaj
B. najkrótszej trasy
C. komiwojażera
D. heurystycznej
Technika „dziel i zwyciężaj” (ang. divide and conquer) to jedno z tych podejść, które moim zdaniem warto naprawdę dobrze rozumieć, bo spotyka się je praktycznie wszędzie w informatyce. Chodzi tutaj o rozbijanie dużego problemu na mniejsze, bardziej strawne kawałki, które rozwiązujemy niezależnie, a potem składamy wyniki w całość. To bardzo eleganckie, bo pozwala np. mocno uprościć złożone zadania, a przy okazji często optymalizuje czas działania algorytmu. Przykładem mogą być sortowanie szybkie (quicksort) czy sortowanie przez scalanie (merge sort). W praktyce branżowej, kiedy pracuje się nad dużymi systemami albo algorytmami operującymi na wielkich zbiorach danych, taki sposób myślenia bardzo się przydaje, bo pozwala łatwo podzielić pracę nawet między kilku programistów. Standardy branżowe, zwłaszcza w kontekście rozwiązań algorytmicznych czy projektowania systemów, promują właśnie takie modularne podejście. Sam kiedyś przekonałem się, że dużo łatwiej jest testować i utrzymywać kod, kiedy trzyma się tej zasady. Fajnie wiedzieć, że często to właśnie „dziel i zwyciężaj” leży u podstaw wielu struktur danych, algorytmów wyszukiwania czy nawet analizy obrazu, nie tylko w typowym programowaniu. Warto pamiętać, że to nie tylko teoria – w codziennej pracy taki styl rozwiązywania problemów pozwala szybciej wychwytywać i naprawiać błędy, a to przecież kluczowe w projektach IT.

Pytanie 32

Jakie aspekty powinny być brane pod uwagę przy tworzeniu struktury danych dla aplikacji?

A. Tylko wymagania sprzętowe
B. Złożoność obróbki danych oraz ich efektywną organizację
C. Tylko typ języka programowania
D. Nie ma związku pomiędzy strukturą danych a efektywnością aplikacji
Złożoność przetwarzania danych i ich optymalna organizacja to kluczowe elementy podczas projektowania struktury danych dla aplikacji. Dobrze zaprojektowana struktura danych wpływa na wydajność aplikacji, redukuje czas dostępu do informacji oraz minimalizuje zużycie zasobów. Optymalizacja algorytmów oraz wybór odpowiednich struktur danych, takich jak listy, drzewa czy tablice hashujące, ma bezpośredni wpływ na szybkość działania aplikacji.

Pytanie 33

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

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

Pytanie 34

Na schemacie widoczny jest fragment diagramu blokowego pewnego algorytmu. Ile razy zostanie zweryfikowany warunek n<7?

Ilustracja do pytania
A. 5
B. 6
C. 8
D. 7
Warunek 'n < 7' będzie sprawdzany dokładnie 6 razy. To dlatego, że w klasycznej pętli for czy while liczba powtórzeń jest zawsze o jeden mniejsza niż wartość graniczna. Jak widzisz, w takich schematach liczba porównań idzie w parze z liczbą iteracji, a pętla zatrzymuje się, jak tylko warunek zostanie spełniony.

Pytanie 35

Które z poniższych nie jest systemem kontroli wersji?

A. MongoDB
B. Git
C. Mercurial
D. SVN
MongoDB jest systemem zarządzania bazami danych, który nie jest systemem kontroli wersji. Jego głównym celem jest przechowywanie i zarządzanie danymi w formacie dokumentów, co czyni go idealnym rozwiązaniem w aplikacjach wymagających elastyczności w strukturze danych. W odróżnieniu od systemów kontroli wersji, takich jak Git, SVN czy Mercurial, MongoDB nie śledzi zmian w kodzie źródłowym, a zamiast tego skupia się na operacjach na danych. W praktyce, MongoDB znajduje zastosowanie w projektach, gdzie wymagana jest szybka iteracja i przetwarzanie dużych zbiorów danych, takich jak aplikacje mobilne, platformy e-commerce czy analizy danych. Dobre praktyki wskazują, że przy budowie nowoczesnych aplikacji warto korzystać z rozwiązań NoSQL, takich jak MongoDB, w połączeniu z systemami kontroli wersji, aby efektywnie zarządzać zarówno kodem, jak i danymi.

Pytanie 36

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

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

Pytanie 37

W jaki sposób można ograniczyć problemy społeczne wynikające z nadmiernego używania internetu?

A. Zachować równowagę pomiędzy relacjami w sieci a tymi w rzeczywistości
B. Zwiększać czas spędzany przy ekranie
C. Unikać spotkań z ludźmi w realnym świecie
D. Całkowicie wycofać się z aktywności wirtualnych
Utrzymywanie równowagi między relacjami online i offline to kluczowy element zapobiegania problemom społecznym wynikającym z nadmiernego korzystania z internetu. Przeplatanie kontaktów wirtualnych z interakcjami twarzą w twarz wzmacnia więzi społeczne i poprawia umiejętności komunikacyjne. Równowaga między życiem cyfrowym a rzeczywistym pozwala unikać izolacji społecznej i wspiera rozwój empatii oraz zdolności interpersonalnych. Jest to szczególnie ważne w kontekście młodzieży, która może być bardziej podatna na negatywne skutki nadmiernej ekspozycji na treści online.

Pytanie 38

Który z operatorów w Pythonie umożliwia sprawdzenie, czy dany element należy do listy?

A. in
B. is
C. and
D. ==
Operator `in` w języku Python służy do sprawdzania, czy element należy do listy, zbioru, krotki lub innego obiektu iterowalnego. Przykład: `if 5 in lista` sprawdza, czy liczba 5 znajduje się w liście. Operator `in` jest niezwykle przydatny w przeszukiwaniu danych, a jego zastosowanie skraca kod i zwiększa jego czytelność. W Pythonie jest on szeroko stosowany do iteracji i filtrowania danych, co czyni go jednym z najbardziej intuicyjnych operatorów języka.

Pytanie 39

W jakiej topologii sieciowe wszystkie urządzenia są bezpośrednio powiązane z każdym innym?

A. Topologia magistrali
B. Topologia pierścienia
C. Topologia siatki
D. Topologia gwiazdy
Topologia siatki to jedna z najbardziej wydajnych i wszechstronnych struktur sieciowych, w której każde urządzenie (węzeł) jest połączone bezpośrednio z każdym innym węzłem. Tego typu topologia zapewnia wysoką dostępność i odporność na awarie, ponieważ awaria jednego połączenia nie wpływa na komunikację pozostałych węzłów. W praktyce ma to zastosowanie w dużych, zaawansowanych sieciach komputerowych, takich jak sieci miejskie (MAN) czy sieci szerokopasmowe. Istnieją dwie główne formy topologii siatki: siatka pełna, gdzie każde urządzenie ma bezpośrednie połączenia z wszystkimi innymi, oraz siatka częściowa, gdzie nie wszystkie węzły są ze sobą bezpośrednio połączone, ale komunikacja jest możliwa przez inne węzły. Topologia siatki, z uwagi na swoje zalety, jest często wykorzystywana w standardach sieciowych, takich jak Ethernet, oraz w systemach rozproszonych, gdzie kluczowe są niezawodność i efektywność przesyłania danych. Dodatkowo, w kontekście Internetu rzeczy (IoT), topologia siatki umożliwia efektywne zarządzanie dużą liczbą urządzeń, co jest kluczowe w inteligentnych miastach i automatyzacji domowej.

Pytanie 40

Który protokół jest używany do bezpiecznej komunikacji przez Internet?

A. SMTP
B. HTTP
C. HTTPS
D. FTP
HTTPS (Hypertext Transfer Protocol Secure) to protokół komunikacyjny, który zapewnia bezpieczną transmisję danych w Internecie poprzez zastosowanie kryptografii. W przeciwieństwie do swojego poprzednika HTTP, HTTPS korzysta z SSL/TLS (Secure Sockets Layer/Transport Layer Security), co pozwala na szyfrowanie danych przesyłanych pomiędzy przeglądarką internetową a serwerem. Dzięki temu, wszelkie informacje, takie jak dane osobowe, hasła czy numery kart kredytowych, są chronione przed podsłuchiwaniem i manipulacją. Użycie HTTPS jest obecnie standardem w branży, zwłaszcza w przypadku stron internetowych, które przetwarzają wrażliwe dane, takich jak sklepy internetowe czy serwisy bankowe. Przykłady zastosowania HTTPS obejmują popularne platformy e-commerce, które implementują ten protokół, aby zbudować zaufanie użytkowników oraz zwiększyć bezpieczeństwo transakcji online. Warto również zauważyć, że wyszukiwarki internetowe, takie jak Google, preferują strony korzystające z HTTPS, co wpływa na ich pozycjonowanie w wynikach wyszukiwania. Wprowadzenie HTTPS jest zatem nie tylko kwestią bezpieczeństwa, ale także praktyki zgodnej z wymaganiami SEO.