Wyniki egzaminu

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

Egzamin zdany!

Wynik: 35/40 punktów (87,5%)

Wymagane minimum: 20 punktów (50%)

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

Co należy zrobić w sytuacji silnego krwawienia z rany?

A. Przepłukać ranę wodą utlenioną i zostawić do wyschnięcia
B. Poczekać, aż krwawienie ustanie samoistnie
C. Założyć opatrunek uciskowy oraz unieść kończynę powyżej poziomu serca
D. Nałożyć elastyczny bandaż bez ucisku
Założenie opatrunku uciskowego i uniesienie kończyny powyżej poziomu serca to najskuteczniejszy sposób na zatrzymanie silnego krwotoku z rany. Opatrunek uciskowy powoduje mechaniczne zamknięcie naczyń krwionośnych, co spowalnia lub całkowicie zatrzymuje wypływ krwi. Podniesienie kończyny dodatkowo zmniejsza ciśnienie krwi w obszarze rany, co ogranicza krwawienie. Ważne jest, aby nie zdejmować opatrunku, nawet jeśli przesiąknie krwią – należy dołożyć kolejną warstwę materiału. W sytuacjach ekstremalnych, gdy opatrunek uciskowy nie zatrzymuje krwawienia, można zastosować opaskę uciskową (tzw. stazę), ale tylko w ostateczności, gdy inne metody zawiodą. Takie działania mogą zapobiec wstrząsowi krwotocznemu i uratować życie poszkodowanego.

Pytanie 2

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

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

Pytanie 3

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

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

Pytanie 4

Co to jest shadow DOM?

A. Mechanizm enkapsulacji kodu HTML, CSS i JavaScript w komponenty webowe
B. Wirtualny DOM używany przez biblioteki jak React i Vue.js
C. Metoda renderowania grafiki 3D w przeglądarkach
D. Technika stylizacji elementów w CSS przy użyciu cieni
Zastosowanie błędnych koncepcji w kontekście Shadow DOM prowadzi do nieporozumień na temat jego funkcji. Przykładem niepoprawnego podejścia jest mylenie Shadow DOM z technikami stylizacji CSS przy użyciu cieni, co jest całkowicie innym zagadnieniem. W rzeczywistości Shadow DOM nie zajmuje się stylizacją w tradycyjnym sensie, lecz umożliwia tworzenie izolowanych instancji DOM, co jest kluczowe w kontekście wielokrotnego użycia komponentów. Innym błędnym zrozumieniem jest myślenie, że Shadow DOM jest metodą renderowania grafiki 3D, czego nie jest; techniki 3D w przeglądarkach są zazwyczaj związane z WebGL. Ponadto, wirtualny DOM, używany przez biblioteki takie jak React czy Vue.js, nie ma związku z Shadow DOM, ponieważ wirtualny DOM jest abstrakcyjną reprezentacją rzeczywistego DOM, mającą na celu optymalizację aktualizacji UI. Shadow DOM natomiast skupia się na izolacji i enkapsulacji kodu. Zrozumienie tych różnic jest kluczowe dla efektywnego wykorzystania technologii webowych, a ich ignorowanie może prowadzić do błędnych implementacji oraz zwiększenia złożoności projektów webowych. Aby skutecznie pracować z komponentami, należy znajomość Shadow DOM zintegrować z innymi technologiami, trzymając się najlepszych praktyk i standardów.

Pytanie 5

Użycie modyfikatora abstract w definicji metody w klasie wskazuje, że

A. trzeba zaimplementować tę metodę w tej klasie
B. klasy pochodne nie mogą implementować tej metody
C. klasa ta stanowi podstawę dla innych klas
D. dziedziczenie po tej klasie jest niedozwolone
Modyfikator abstract w definicji metody jasno wskazuje, że dana klasa jest przeznaczona do dalszego dziedziczenia i stanowi coś w rodzaju szablonu dla innych klas. W praktyce – jeśli w klasie pojawia się choć jedna metoda abstract, cała klasa musi być także oznaczona jako abstract. To taki sygnał: hej, tej klasy nie da się użyć bezpośrednio, ale możesz po niej dziedziczyć i dopiero tam zaimplementować szczegóły. Moim zdaniem to bardzo wygodne, bo pozwala z góry narzucić kontrakt na klasy pochodne – mają dostarczyć własne wersje abstrakcyjnych metod. W wielu językach obiektowych, jak C# czy Java, stosowanie klas abstrakcyjnych jest powszechną praktyką przy projektowaniu rozbudowanych aplikacji, gdzie ważne jest rozdzielenie ogólnej logiki od szczegółowych implementacji. Daje to sporą elastyczność i chroni przed przypadkowymi błędami, kiedy ktoś próbowałby utworzyć obiekt klasy, która nie ma pełnej funkcjonalności. Często spotyka się to np. przy projektowaniu hierarchii typu Zwierzę → Pies/Kot, gdzie klasa Zwierzę jest abstrakcyjna i zawiera np. metodę abstract WydajDźwięk(). Dzięki temu każde konkretne zwierzę musi zaimplementować własną wersję tej metody, a całość kodu jest czytelniejsza i łatwiej ją rozwijać. Zdecydowanie warto poznać ten mechanizm, bo to fundament nowoczesnego programowania obiektowego i coś, co codziennie przydaje się w pracy programisty.

Pytanie 6

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

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

Pytanie 7

Fragment kodu w języku JavaScript to

let modulo = (x, y) => x % y;
A. Prototyp metody klasy
B. Definicja funkcji strzałkowej
C. Definicja zmiennej typu tablicowego
D. Prototyp interfejsu
Ten fragment kodu w JavaScript to klasyczny przykład funkcji strzałkowej, czyli tzw. arrow function. To funkcja zdefiniowana w bardzo nowoczesny, oszczędny sposób, który pojawił się wraz z ES6 (ECMAScript 2015). Taki zapis pozwala na szybkie tworzenie prostych funkcji anonimowych, bez potrzeby używania słowa kluczowego 'function'. Ma to ogromne znaczenie np. przy pracy z wyrażeniami funkcyjnymi, callbackami albo wszędzie tam, gdzie liczy się zwięzłość kodu. Samo 'let modulo = (x, y) => x % y;' oznacza, że tworzymy zmienną 'modulo', która przechowuje funkcję przyjmującą dwa argumenty i od razu zwracającą resztę z dzielenia x przez y. Co ciekawe, funkcje strzałkowe różnią się od tradycyjnych tym, że nie mają własnego kontekstu this (dziedziczą go z otoczenia). To jest bardzo przydatne np. przy pracy w metodach klas lub obiektach, gdzie nie chcemy nieoczekiwanej zmiany kontekstu. Moim zdaniem warto nawykowo korzystać z tej składni, bo kod robi się dużo czytelniejszy i łatwiejszy w utrzymaniu. W różnych frameworkach (np. React) funkcje strzałkowe są wręcz codziennością – definiuje się tak np. proste event handlery czy filtry. No i jeszcze jedno: taka funkcja jest idealna, gdy chcemy przekazać logikę w jednym krótkim wyrażeniu bez robienia bałaganu w kodzie.

Pytanie 8

Jaki będzie wynik działania poniższego kodu JavaScript?

let x = 5;
let y = '10';
console.log(x + y);
A. error
B. 510
C. 15
D. undefined
Wynik działania podanego kodu to 510, co może być zaskakujące dla osób nieznających typów danych w JavaScript. W tym przypadku zmienna x jest liczbą całkowitą (5), a zmienna y jest łańcuchem tekstowym ('10'). Kiedy używamy operatora + w JavaScript, następuje tzw. "przesunięcie typów". Gdy jeden z operandów jest łańcuchem, to JavaScript konwertuje pozostałe typy na łańcuch, a następnie wykonuje konkatenację. W efekcie 5 konwertowane jest na '5', a wynik końcowy to '5' + '10', co daje '510'. To zachowanie jest zgodne z regułami języka JavaScript i jego dynamicznym typowaniem. Warto zwrócić uwagę, że taka konwersja może prowadzić do niezamierzonych wyników, dlatego ważne jest, aby zrozumieć, kiedy i jak działają operatory w JavaScript. Dla większej jasności, w sytuacjach, gdy chcemy dodać dwie liczby, lepiej jest upewnić się, że obie zmienne mają ten sam typ danych, np. przez użycie funkcji parseInt() lub parseFloat().

Pytanie 9

Co to jest IndexedDB?

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

Pytanie 10

Jakie jest przeznaczenie komentarzy w kodzie źródłowym programu?

A. Do optymalizacji wydajności kodu
B. Do definiowania zmiennych globalnych
C. Do dokumentowania działania kodu i ułatwienia jego zrozumienia
D. Do uruchamiania kodu w trybie debugowania
Komentarze w kodzie źródłowym programu pełnią kluczową rolę w dokumentowaniu działania aplikacji. Dzięki nim programiści mogą opisywać, co robią poszczególne fragmenty kodu, jakie funkcje realizują oraz jakie są zależności między modułami. Komentarze nie wpływają na działanie programu, ale znacząco ułatwiają pracę nad nim w przyszłości, zwłaszcza gdy projekt jest rozwijany przez wielu programistów lub po dłuższej przerwie. Komentarze poprawiają czytelność kodu, minimalizując ryzyko błędów wynikających z niejasności lub złej interpretacji działania aplikacji. W dobrze napisanym kodzie komentarze są używane strategicznie – opisują kluczowe algorytmy, niestandardowe rozwiązania oraz obszary wymagające szczególnej uwagi. Przejrzysty i dobrze udokumentowany kod to fundament skalowalnych i łatwych w utrzymaniu aplikacji.

Pytanie 11

Które z wymienionych stwierdzeń najtrafniej charakteryzuje klasę bazową?

A. Klasa, która dziedziczy z klasy pochodnej
B. Klasa, która zapewnia wspólne atrybuty i metody dla klas pochodnych
C. Klasa, która zawsze zawiera metody wirtualne
D. Klasa, która nie może być dziedziczona
Klasa bazowa to klasa, która dostarcza wspólne pola i metody dla klas pochodnych. Definiuje ogólną funkcjonalność, która może być rozszerzana lub modyfikowana przez klasy dziedziczące. Dzięki temu programowanie obiektowe umożliwia wielokrotne wykorzystanie kodu, co prowadzi do jego większej modularności i czytelności. Klasa bazowa często zawiera metody wirtualne, które mogą być nadpisywane przez klasy pochodne, co pozwala na dostosowanie funkcjonalności do konkretnych potrzeb. Przykładem jest klasa 'Pojazd', która posiada metody takie jak 'Jedz()' czy 'Zatrzymaj()', a klasy pochodne, np. 'Samochód' lub 'Rower', rozszerzają tę funkcjonalność.

Pytanie 12

Która technologia służy do tworzenia responsywnych stron internetowych?

A. Local Storage
B. Media Queries w CSS
C. REST API
D. WebSockets
Media Queries w CSS to technika, która pozwala na tworzenie responsywnych stron internetowych poprzez dostosowywanie stylów do różnych rozmiarów ekranów i urządzeń. Dzięki zastosowaniu reguł media queries, projektanci mogą definiować, jak elementy na stronie mają się zachowywać w zależności od szerokości ekranu, orientacji urządzenia czy jego rozdzielczości. Na przykład, można ustawić większe marginesy na dużych ekranach desktopowych, a na mniejszych urządzeniach mobilnych zredukować je, aby lepiej wykorzystać ograniczoną przestrzeń. Stosując media queries, można również zmieniać rozmiary czcionek, układ kolumn czy widoczność niektórych elementów, co jest kluczowe dla optymalizacji użytkowania na różnych platformach. Jest to częścią podejścia mobile-first, które stało się standardem w nowoczesnym web designie. Warto również zaznaczyć, że korzystanie z media queries wspiera dostępność i użyteczność stron internetowych, co jest zgodne z dobrymi praktykami branżowymi.

Pytanie 13

Co oznacza termin 'immutability' w programowaniu funkcyjnym?

A. Kod może być wykonywany równolegle
B. Funkcje mogą być przypisywane do zmiennych
C. Obiekty są automatycznie usuwane z pamięci
D. Stan obiektu nie może być modyfikowany po jego utworzeniu
Termin 'immutability' w programowaniu funkcyjnym odnosi się do właściwości obiektów, które po utworzeniu nie mogą być modyfikowane. W kontekście programowania funkcyjnego, gdzie funkcje są kluczowym składnikiem, immutability jest fundamentalnym założeniem, które pozwala na tworzenie bardziej przewidywalnych i bezpiecznych aplikacji. Kiedy obiekty są niemodyfikowalne, każde ich 'zmiana' generuje nowy obiekt, zamiast aktualizować istniejący, co eliminuję problemy związane z nieprzewidywalnym stanem aplikacji. Przykładem może być język programowania Scala, gdzie kolekcje, takie jak List, są niemodyfikowalne z założenia. Z perspektywy dobrych praktyk, immutability przyczynia się do łatwiejszej analizy kodu, testowania jednostkowego oraz równoległego przetwarzania danych. Ponadto, programowanie funkcyjne, bazujące na tej koncepcji, sprzyja tworzeniu czystych, modularnych i łatwych do przetestowania aplikacji.

Pytanie 14

Celem zastosowania wzorca Obserwator w tworzeniu aplikacji WEB jest

A. monitorowanie interakcji użytkownika i wysyłanie wyjątków
B. dostosowanie interfejsu użytkownika do różnych typów odbiorców
C. informowanie obiektów o modyfikacji stanu innych obiektów
D. zarządzanie funkcjami synchronicznymi w kodzie aplikacji
Wzorzec Obserwator, znany również jako Observer, jest fundamentem programowania związanego z aplikacjami webowymi, szczególnie w kontekście architektury MVC (Model-View-Controller). Jego głównym celem jest umożliwienie obiektom (zwanym obserwatorami) subskrybowania zmian stanu innych obiektów (zwanych obserwowanymi). Kiedy stan obiektu obserwowanego ulega zmianie, wszystkie powiązane obiekty obserwujące są automatycznie powiadamiane o tej zmianie. Takie podejście jest szczególnie użyteczne w aplikacjach, gdzie interfejs użytkownika musi być dynamicznie aktualizowany w odpowiedzi na zmiany danych, na przykład w przypadku aplikacji do zarządzania danymi w czasie rzeczywistym. Przykładem może być aplikacja czatu, w której nowe wiadomości są automatycznie wyświetlane użytkownikom, gdy tylko są dodawane przez innych. Wzorzec ten jest również zgodny z zasadami SOLID, zwłaszcza z zasadą otwarte-zamknięte, umożliwiając rozwijanie aplikacji bez konieczności modyfikowania istniejących klas. W różnych technologiach webowych, takich jak JavaScript z użyciem frameworków takich jak React czy Angular, wzorzec Obserwator jest implementowany przez mechanizmy takie jak stany komponentów, co przyczynia się do lepszej organizacji kodu i zachowania jego czytelności.

Pytanie 15

Jakie elementy powinny być zawarte w instrukcji dla użytkownika danej aplikacji?

A. Wyjaśnienie struktur danych wykorzystywanych w kodzie
B. Opis instalacji, konfiguracji oraz obsługi oprogramowania
C. Informacje o narzędziach programistycznych zastosowanych w procesie tworzenia aplikacji
D. Harmonogram realizacji projektu
W instrukcji użytkownika aplikacji warto, żeby był opis tego, jak zainstalować, skonfigurować i korzystać z programu. Taka dokumentacja, pisana krok po kroku, pomaga użytkownikowi przejść przez wszystkie etapy, od pobrania oprogramowania, przez instalację, aż po to, żeby w pełni wykorzystać wszystkie funkcje. Dobrze, żeby były tam też info o wymaganiach systemowych, sposobach radzenia sobie z problemami czy aktualizacjach oprogramowania. Moim zdaniem, taka dokładna instrukcja jest mega ważna, bo zmniejsza szanse na napotkanie kłopotów podczas korzystania z aplikacji i sprawia, że łatwiej jest wdrożyć ją w pracy. Jak użytkownicy mają porządnie napisaną instrukcję, to są bardziej zadowoleni i szybciej przyzwyczajają się do nowego narzędzia.

Pytanie 16

Jaki typ testów ocenia funkcjonalność aplikacji z punktu widzenia użytkownika końcowego?

A. Testy użyteczności
B. Testy obciążeniowe
C. Testy funkcjonalne
D. Testy zgodności
Testy obciążeniowe skupiają się na sprawdzaniu, jak aplikacja działa pod dużym ruchem lub obciążeniem, co pozwala ocenić jej wydajność, ale nie dotyczy to bezpośrednio doświadczeń użytkownika. Testy funkcjonalne mają na celu sprawdzenie, czy poszczególne funkcje aplikacji działają zgodnie z założeniami, ale nie badają wygody użytkowania. Testy zgodności natomiast weryfikują, czy aplikacja spełnia określone normy i standardy, co ma niewiele wspólnego z oceną użyteczności aplikacji przez użytkownika końcowego.

Pytanie 17

Jakie słowa kluczowe są stosowane w języku C++ do zarządzania wyjątkami?

A. except i finally
B. try i catch
C. try i raise
D. throw i handle
Słowa kluczowe 'try' i 'catch' są podstawą obsługi wyjątków w języku C++. Umożliwiają one przechwytywanie i obsługę błędów, które mogą wystąpić podczas wykonywania programu. Blok 'try' zawiera kod, który jest monitorowany pod kątem błędów, a blok 'catch' przechwytuje i przetwarza zgłoszony wyjątek, zapobiegając nieoczekiwanemu zakończeniu programu. Mechanizm ten jest kluczowy dla tworzenia niezawodnego i odpornego na błędy oprogramowania. Dzięki 'try' i 'catch' programista może implementować logikę naprawczą lub logować błędy, co zwiększa stabilność i bezpieczeństwo aplikacji.

Pytanie 18

Tworząc aplikację opartą na obiektach, należy założyć, że program będzie zarządzany przez

A. moduły zawierające funkcje oraz zmienne globalne
B. zbiór instancji klas współpracujących ze sobą
C. definicję warunków końcowego rozwiązania
D. pętlę dyspozytora, która w zależności od zdarzenia wywoła właściwą funkcję
W programowaniu obiektowym najważniejsze jest właśnie to, że wszystko opiera się na współpracujących ze sobą instancjach klas, czyli obiektach. To one przechowują dane (atrybuty) i zachowania (metody), a cała logika programu kręci się wokół ich interakcji. W praktyce oznacza to, że projektując aplikację, skupiasz się na tym, jakie obiekty będą potrzebne (np. Użytkownik, Zamówienie, Produkt), jakie mają cechy i jak ze sobą współpracują. Takie podejście pozwala na łatwiejsze zarządzanie złożonymi programami – moim zdaniem dużo prościej utrzymać i rozwijać kod, gdy jest podzielony na logiczne byty. To też zgodne ze standardami jak SOLID czy wzorce projektowe typu MVC, gdzie każda część aplikacji odpowiada za coś konkretnego, a komunikacja odbywa się przez wywołania metod. Przykład? W sklepie internetowym klasy takie jak Koszyk i Produkt "rozmawiają" ze sobą: koszyk dodaje produkt, sprawdza jego stan itd. Co ciekawe, takie ułożenie bardzo ułatwia testowanie jednostkowe – testujesz zachowanie pojedynczych obiektów, zamiast całych skomplikowanych funkcji rozsianych po programie. Z własnego doświadczenia mogę powiedzieć, że praca z kodem opartym o obiekty jest po prostu przyjemniejsza, mniej chaotyczna i zdecydowanie bardziej odporna na błędy przy rozwoju projektu.

Pytanie 19

W podanym fragmencie kodu Java wskaż, która zmienna może przechować wartość "T":

int zm1;
float zm2;
char zm3;
boolean zm4;
A. zm2
B. zm4
C. zm3
D. zm1
Zmienna o nazwie zm3 została zadeklarowana jako typu char co oznacza że może przechowywać pojedynczy znak w tym przypadku wartość T. Typ char w języku Java jest używany do przechowywania znaków Unicode co czyni go idealnym do obsługi liter jako danych. Każdy znak jest przechowywany jako 16-bitowa wartość liczby całkowitej co umożliwia reprezentację szerokiego zakresu symboli w tym litery cyfry i inne znaki specjalne. Przykładowymi zastosowaniami typu char są przypadki gdzie konieczne jest przechowywanie i przetwarzanie liter np. w sytuacjach gdy aplikacja wymaga manipulacji pojedyńczymi znakami w tekście czy analizą ich wartości w kontekście porównywania danych. Dobre praktyki przy pracy z typem char obejmują świadome zarządzanie pamięcią i unikanie niepotrzebnych konwersji do innych typów danych co może prowadzić do strat precyzji lub nieoczekiwanych rezultatów. Ważne jest także zrozumienie jak znaki są kodowane i dekodowane szczególnie w kontekście międzynarodowym gdzie prawidłowa obsługa znaków Unicode jest kluczowa dla zapewnienia kompatybilności i poprawnego działania aplikacji w różnych językach.

Pytanie 20

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

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

Pytanie 21

Który z przedstawionych poniżej przykładów ilustruje prawidłową deklarację zmiennej typu całkowitego w języku C++?

A. char liczba;
B. bool liczba;
C. float liczba;
D. int liczba;
W języku C++ zmienna typu całkowitego jest deklarowana za pomocą słowa kluczowego `int`. Przykładowa poprawna deklaracja to `int liczba;`, co oznacza, że `liczba` jest zmienną, która może przechowywać wartości całkowite, takie jak 1, 42 lub -15. Deklarowanie zmiennych w C++ pozwala na statyczne typowanie, co oznacza, że każda zmienna ma określony typ i nie może przechowywać wartości innego typu. Dzięki temu kod jest bardziej przejrzysty i mniej podatny na błędy związane z niezgodnością typów.

Pytanie 22

Która z wymienionych zasad odnosi się do zachowania prywatności w sieci?

A. Publikowanie danych osobowych na otwartych platformach
B. Stosowanie pseudonimów zamiast rzeczywistych imion na mediach społecznościowych
C. Umieszczanie wszystkich zdjęć na platformach społecznościowych
D. Przechowywanie haseł w wiadomościach e-mail
Używanie pseudonimów zamiast prawdziwych imion na portalach społecznościowych jest jedną z podstawowych zasad ochrony prywatności w internecie. Dzięki temu ograniczasz możliwość identyfikacji i śledzenia Twojej aktywności przez osoby trzecie. Pseudonimy minimalizują ryzyko kradzieży tożsamości i redukują ilość danych osobowych dostępnych publicznie. To działanie jest szczególnie ważne dla dzieci i młodzieży, chroniąc ich przed cyberprzemocą i innymi zagrożeniami. W wielu serwisach można także dostosować ustawienia prywatności, ukrywając profil przed osobami spoza listy znajomych.

Pytanie 23

Na ilustracji pokazany jest fragment diagramu blokowego pewnego algorytmu. Ile razy warunek n<7 będzie badany?

Ilustracja do pytania
A. 7
B. 8
C. 5
D. 6
Odpowiedź 4 jest prawidłowa ponieważ algorytm rozpoczyna od n równego 1 i zwiększa tę wartość o jeden w każdej iteracji aż do momentu gdy n stanie się równe 7 Wtedy warunek n mniejsze od 7 przestaje być spełniony co oznacza że warunek ten jest sprawdzany łącznie 6 razy tj dla n równych 1 2 3 4 5 i 6 Jest to typowa pętla kontrolna często spotykana w programowaniu gdzie warunek pętli decyduje o jej zakończeniu W praktyce takie podejście pozwala na efektywne zarządzanie liczbą iteracji i zapewnia klarowność kodu Co więcej użycie pętli z warunkiem końcowym jest zgodne z dobrymi praktykami projektowania algorytmów gdyż minimalizuje ryzyko błędów logicznych poprzez jawne określenie końca pętli Ponadto zrozumienie mechanizmu działania pętli i jej warunków jest kluczowe dla optymalizacji algorytmów i efektywnego zarządzania zasobami co ma bezpośrednie przełożenie na wydajność aplikacji szczególnie w środowiskach wymagających dużej mocy obliczeniowej

Pytanie 24

Jakie są kluczowe różnice między typami stałoprzecinkowymi a zmiennoprzecinkowymi?

A. Typy stałoprzecinkowe wymagają większej ilości pamięci niż typy zmiennoprzecinkowe
B. Typy stałoprzecinkowe przechowują liczby całkowite, a typy zmiennoprzecinkowe przechowują liczby z ułamkami dziesiętnymi
C. Typy stałoprzecinkowe obsługują liczby ujemne, natomiast typy zmiennoprzecinkowe tylko dodatnie
D. Typy zmiennoprzecinkowe przechowują wyłącznie liczby ujemne
Główna różnica między typami stałoprzecinkowymi a zmiennoprzecinkowymi polega na tym, że stałoprzecinkowe przechowują liczby całkowite, podczas gdy zmiennoprzecinkowe przechowują liczby z częściami dziesiętnymi. Stałoprzecinkowe typy, takie jak 'int', są bardziej efektywne pod względem wydajności i zajmują mniej pamięci, co czyni je idealnym rozwiązaniem w przypadkach, gdzie precyzja dziesiętna nie jest wymagana. Z kolei typy zmiennoprzecinkowe, takie jak 'float' i 'double', umożliwiają dokładne reprezentowanie wartości niecałkowitych, co jest niezbędne w aplikacjach matematycznych i graficznych. Każdy z tych typów ma swoje zastosowanie w zależności od wymagań projektu.

Pytanie 25

Ile kilobajtów (KB) znajduje się w jednym megabajcie (MB)?

A. 10
B. 100
C. 1000
D. 1024
Odpowiedzi, które wskazują na wartości 10, 100 i 1000 kilobajtów jako równowartość 1 megabajta, są błędne z perspektywy standardów komputerowych. Wartość 10 KB jest zdecydowanie zbyt mała, aby mogła odpowiadać wielkości 1 MB, which is a fundamental misunderstanding of data measurement. Tego rodzaju konwersja wprowadza w błąd, ponieważ nie uwzględnia potęg liczby 2, które są kluczowe w kontekście binarnego systemu liczenia. Z kolei 100 KB również nie jest właściwe, ponieważ jest to zaledwie 1/10 megabajta, co jest dalekie od rzeczywistej konwersji. Ponadto, traktowanie 1000 KB jako równowartości 1 MB jest nawiązaniem do systemu dziesiętnego, który jest używany przez niektóre branże, ale nie jest to standardowe podejście w obliczeniach komputerowych. Z technicznego punktu widzenia, przyjęcie, że 1 MB to 1000 KB, może prowadzić do błędnych obliczeń oraz problemów z zarządzaniem danymi w systemach operacyjnych, które stosują binarny system pomiaru pamięci. Dlatego kluczowe jest, aby zrozumieć różnice między tymi systemami, aby uniknąć nieporozumień w zakresie pojemności danych.

Pytanie 26

Wzorzec projektowy "Metoda szablonowa" (Template method) stosuje się do:

A. organizowania obiektów w hierarchiczne struktury drzewiaste
B. gromadzenia obiektów w jednorodnej kolekcji
C. określenia szkieletu algorytmu i pozostawienia szczegółów implementacji dla podklas
D. centralizacji zarządzania wieloma instancjami obiektów
Wzorzec projektowy 'Metoda szablonowa' to naprawdę sprytna sprawa, szczególnie w programowaniu obiektowym. Ten wzorzec pozwala zdefiniować ogólną strukturę algorytmu w klasie bazowej, a szczegóły implementacji przekazać do podklas. Brzmi jak coś z teorii, ale w praktyce często się przydaje, bo daje kontrolę nad przepływem działania algorytmu, nie tracąc elastyczności. To taki kompromis: masz szkielet (np. metoda w klasie abstrakcyjnej), ale nie zamykasz drogi na własne pomysły w podklasach. Typowym przykładem może być system obsługi płatności: cała procedura (np. przetwarzanie zamówienia) jest ustalona, ale poszczególne kroki typu 'autoryzuj', 'zrealizuj' czy 'zatwierdź' można nadpisywać. Daje to porządek i spójność kodu, a przy okazji nie zamyka na zmiany. Moim zdaniem, jeśli w projekcie pojawia się powtarzalny schemat postępowania, który tylko w detalach się różni, to Metoda szablonowa jest jednym z najczystszych rozwiązań. Warto pamiętać, że to podejście zgodne z zasadą Hollywood: „Don’t call us, we’ll call you” – to szkielet decyduje, kiedy wywołać szczegóły. Wielu seniorów poleca ten wzorzec, bo upraszcza utrzymanie i rozwijanie kodu, a IDE typu IntelliJ czy Visual Studio świetnie ogarniają takie abstrakcyjne klasy. Szczerze – w wielu firmach to po prostu standard.

Pytanie 27

Który z poniższych metod najlepiej zabezpiecza dane karty płatniczej podczas zakupów online?

A. Używanie wirtualnych kart płatniczych lub jednorazowych kodów
B. Przechowywanie numeru karty w przeglądarce internetowej
C. Udostępnianie danych karty na platformach internetowych
D. Podawanie informacji o karcie w odpowiedzi na wiadomość e-mail od nieznajomego
Korzystanie z wirtualnych kart płatniczych lub jednorazowych kodów to skuteczny sposób na ochronę danych karty płatniczej podczas transakcji internetowych. Wirtualne karty mają ograniczony okres ważności i są powiązane z określoną kwotą, co minimalizuje ryzyko kradzieży całego konta bankowego. Jednorazowe kody płatności wygasają po jednorazowym użyciu, co uniemożliwia ich ponowne wykorzystanie przez osoby trzecie. Dzięki tym metodom użytkownicy znacznie redukują ryzyko oszustw i nieautoryzowanych transakcji.

Pytanie 28

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

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

Pytanie 29

Zaprezentowany kod zawiera pola danej klasy. Które pole (pola) mogą być dostępne z poziomu głównego programu poprzez odwołanie w formie nazwaObiektu.nazwaPola?

private int p1;
private short p2;
public string p3;
protected string p4;
protected float p5;
A. wyłącznie p3, p4, p5
B. jedynie p3
C. p1
D. p3 i p4
To jest właśnie sedno sprawy z modyfikatorami dostępu w programowaniu obiektowym, szczególnie w językach takich jak Java czy C#. Kiedy masz pole oznaczone jako public, jak w przypadku p3, to znaczy, że możesz się do niego odwołać z poziomu dowolnego innego kodu, czyli np. z głównego programu poprzez konstrukcję nazwaObiektu.nazwaPola. To jest bardzo wygodne, choć uczciwie mówiąc, nie zawsze bezpieczne – branżowo najczęściej rekomenduje się stosowanie enkapsulacji, czyli raczej private i dostęp przez gettery/settery. Moim zdaniem lepiej rozumieć, dlaczego public coś udostępnia, a protected czy private już nie. Protected pozwala na dostęp tylko w klasach pochodnych, więc w samym głównym programie (po prostu mając obiekt tej klasy) nie masz do niego dostępu. Private – to już w ogóle, jedynie sama klasa może się dobrać do własnych pól, cała reszta odpada. To, co często zaskakuje, to fakt, że nawet jeśli coś jest protected, to nie zrobisz obiekt.protectedPole w zwykłym programie – musiałbyś pisać klasę dziedziczącą. Praktycznie public daje największą swobodę, ale z mojego doświadczenia, jeśli nie musisz, nie rób wszystkiego na public. W tym przykładzie jedynie p3 można bezpośrednio wywołać z głównego programu przez nazwaObiektu.p3 – reszta jest ukryta przez modyfikatory dostępu, i to jest zdecydowanie zgodne ze sztuką programowania obiektowego i zasadą hermetyzacji.

Pytanie 30

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

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

Pytanie 31

Które zdarzenie w JavaScript jest wywoływane po całkowitym załadowaniu strony?

A. window.onload
B. document.ready
C. window.render
D. page.complete
Odpowiedź "window.onload" jest poprawna, ponieważ zdarzenie to jest wywoływane, gdy cała strona, w tym wszystkie obrazy, skrypty i style, zostały całkowicie załadowane. Jest to niezwykle istotne w kontekście programowania w JavaScript, ponieważ pozwala na pewność, że wszystkie zasoby są dostępne, zanim podejmiemy jakiekolwiek działania na elementach DOM. Przykładowo, jeśli chcemy zmienić zawartość elementu na stronie lub dodać do niej interaktywne funkcje, musimy upewnić się, że cały dokument jest już w pełni załadowany. Dobrym przykładem zastosowania jest sytuacja, kiedy po załadowaniu strony chcemy zainicjować jakieś skrypty, które manipulują elementami DOM, na przykład dodanie zdarzeń do przycisków lub animacji. Współczesne standardy wskazują na stosowanie tego zdarzenia w połączeniu z innymi metodami, jak np. "DOMContentLoaded", co pozwala na bardziej efektywne zarządzanie ładowaniem zasobów. Warto zaznaczyć, że chociaż "window.onload" jest użyteczne, w wielu nowoczesnych aplikacjach front-end używa się frameworków, które mogą oferować bardziej zaawansowane mechanizmy zarządzania cyklem życia aplikacji.

Pytanie 32

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

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

Pytanie 33

Który z wymienionych parametrów określa prędkość procesora?

A. Rodzaj złącza
B. Liczba rdzeni
C. Częstotliwość taktowania
D. Wielkość pamięci podręcznej
Częstotliwość taktowania procesora, wyrażana najczęściej w gigahercach (GHz), jest kluczowym parametrem opisującym szybkość działania jednostki centralnej. Określa, ile cykli zegara procesor jest w stanie wykonać w ciągu jednej sekundy. Wyższa częstotliwość oznacza większą ilość operacji, które procesor może przetworzyć w danym czasie, co bezpośrednio wpływa na jego wydajność. Przykładowo, procesor o częstotliwości 3,0 GHz może wykonać 3 miliardy cykli na sekundę, co sprawia, że jest w stanie przeprowadzać bardziej skomplikowane obliczenia i efektywniej zarządzać zadaniami. W praktyce jednak sama częstotliwość nie jest jedynym wskaźnikiem wydajności; istotne są też inne czynniki, takie jak architektura procesora, liczba rdzeni czy szybkość pamięci RAM. Standardy, takie jak Intel Core i9 czy AMD Ryzen 5000, dostarczają informacji na temat maksymalnej częstotliwości taktowania, co pozwala konsumentom lepiej dobierać sprzęt do swoich potrzeb. Warto również zauważyć, że wielu nowoczesnych procesorów stosuje technologię Turbo Boost, która pozwala na chwilowe zwiększenie częstotliwości w celu uzyskania lepszej wydajności przy intensywnych obciążeniach.

Pytanie 34

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

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

Pytanie 35

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

A. Studio Androida
B. Visual Studio Code
C. Eclipse
D. XCode
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 36

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

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

Pytanie 37

Który z wymienionych parametrów dysku twardego ma największy wpływ na jego wydajność?

A. Prędkość obrotowa talerzy (RPM)
B. Rodzaj złącza (SATA/PCIe)
C. Ilość pamięci podręcznej (Cache)
D. Pojemność dysku
Pojemność dysku jest istotnym parametrem, ale nie wpływa bezpośrednio na jego szybkość działania. Większa pojemność oznacza, że na dysku można przechowywać więcej danych, jednak nie przyspiesza to operacji odczytu i zapisu. Wydajność jest bardziej związana z tym, jak szybko dane mogą być przesyłane do i z dysku, co nie jest bezpośrednio związane z jego pojemnością. Rodzaj złącza, takiego jak SATA czy PCIe, również ma swoje znaczenie, ale w przypadku dysków HDD to prędkość obrotowa jest kluczowa dla szybkości pracy. Złącza PCIe, które są znacznie szybsze od SATA, są bardziej relevantne w kontekście dysków SSD, gdzie czas dostępu i szybkość transferu są znacznie wyższe niż w przypadku talerzowych dysków HDD. Na koniec, ilość pamięci podręcznej (Cache) dysku, choć ma znaczenie w usprawnieniu operacji odczytu i zapisu, to jej wpływ jest marginalny w porównaniu do prędkości obrotowej. Cache działa jako bufor, ale nie zastąpi wyższej prędkości obrotowej talerzy, która decyduje o tym, jak быстро można uzyskać dostęp do danych przechowywanych na dysku.

Pytanie 38

Który z języków programowania jest powszechnie stosowany do tworzenia interfejsów użytkownika przy użyciu XAML?

A. Objective-C
B. C#
C. Java
D. C++
C++ jest często używany do tworzenia aplikacji desktopowych, ale w przypadku interfejsów użytkownika XAML jest bardziej związany z C#. Java jest językiem wykorzystywanym głównie do tworzenia aplikacji na Androida oraz aplikacji webowych i backendowych, ale nie jest typowo używany do programowania interfejsów w XAML. Objective-C to starszy język programowania dla systemów Apple i nie jest związany z XAML, który jest specyficzny dla technologii Microsoftu.

Pytanie 39

Która metoda w obrębie klasy jest uruchamiana automatycznie podczas tworzenia kopii obiektu?

A. Metoda statyczna
B. Konstruktor kopiujący
C. Metoda zaprzyjaźniona
D. Destruktor
Konstruktor kopiujący to taka specyficzna metoda w klasie, która działa, kiedy robimy nowy obiekt jako kopię już istniejącego. Dzięki temu możemy skopiować wartości pól z jednego obiektu do drugiego. To naprawdę ważne, zwłaszcza gdy mówimy o zarządzaniu pamięcią. Na przykład w C++ może to wyglądać tak: `Samochod(const Samochod &inny) { marka = inny.marka; przebieg = inny.przebieg; }`. Konstruktor kopiujący ma na celu uniknięcie problemów związanych z tzw. płytkim kopiowaniem, co może prowadzić do różnych błędów, jak wielokrotne zwolnienie tej samej pamięci. Generalnie mówiąc, jest to kluczowy mechanizm, który pomaga utrzymać bezpieczeństwo i poprawność działania naszej aplikacji.

Pytanie 40

Przedstawione w filmie działania wykorzystują narzędzie

A. debuggera analizującego wykonujący kod
B. kompilatora dla interfejsu graficznego
C. generatora GUI przekształcającego kod do języka XAML
D. generatora kodu java
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.