Wyniki egzaminu

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

Egzamin niezdany

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

Wymagane minimum: 20 punktów (50%)

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

Które z podejść do tworzenia aplikacji najlepiej uwzględnia przyszłe zmiany w funkcjonalności?

A. Zastosowanie modularnej architektury aplikacji
B. Skupienie się tylko na estetce aplikacji
C. Tworzenie bez wcześniejszej specyfikacji technicznej
D. Pisanie kodu bez jakiejkolwiek dokumentacji

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Użycie modularnej architektury aplikacji to najlepsze podejście do projektowania systemów, które muszą uwzględniać przyszłe modyfikacje funkcjonalności. Modularność pozwala na podział aplikacji na mniejsze, niezależne komponenty, które mogą być rozwijane, testowane i aktualizowane niezależnie od siebie. Takie podejście zwiększa elastyczność, ułatwia zarządzanie kodem i pozwala na szybkie wdrażanie nowych funkcji bez konieczności ingerencji w cały system. Architektura modularna jest szczególnie przydatna w dużych projektach, gdzie zmiany są częste, a wymagania dynamicznie się zmieniają.

Pytanie 2

Jak zostanie przedstawiony poniższy kod XAML?

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

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
W przedstawionym kodzie XAML widoczna jest struktura składająca się z kilku elementów UI ułożonych w pionowym StackLayout co skutkuje wyświetleniem ich w pionowej kolejności. Pierwszym elementem jest Entry z placeholderem Imię a kolejnym Entry z placeholderem Nazwisko co determinuje obecność dwóch pól tekstowych tak jak w Rysunku 4. Następnie w kodzie znajduje się poziomy StackLayout z etykietą Zgoda RODO i przełącznikiem ustawionym na wartość true co oznacza że przełącznik jest domyślnie włączony. To również odpowiada widokowi na Rysunku 4. Kolejny element to Slider z ustawionymi kolorami MinimumTrackColor i MaximumTrackColor co pozwala na zmianę koloru paska suwaka co również jest widoczne w Rysunku 4. Na końcu znajduje się Button z tekstem Zapisz i jest to jedyny przycisk w całym układzie co także zgadza się z Rysunkiem 4. Rozumienie kodu XAML i jego renderowania jest kluczowe w tworzeniu aplikacji mobilnych ponieważ pozwala na precyzyjne określenie wyglądu i funkcjonalności interfejsu użytkownika i jest zgodne z najlepszymi praktykami w projektowaniu UI.

Pytanie 3

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. komiwojażera
C. heurystycznej
D. najkrótszej trasy

Brak odpowiedzi na to pytanie.

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

Jakie stwierdzenie najlepiej tłumaczy cel podziału programu na funkcje (metody)?

A. Umożliwia skrócenie kodu przez eliminację wszelkich komentarzy
B. Gwarantuje automatyczną kompilację programu
C. Eliminuje potrzebę korzystania ze zmiennych globalnych
D. Ułatwia proces debugowania oraz ponowne wykorzystanie fragmentów kodu

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Dzielenie programu na funkcje (lub metody) jest jedną z kluczowych zasad programowania strukturalnego i obiektowego. Funkcje pozwalają na podzielenie dużych bloków kodu na mniejsze, łatwiejsze do zarządzania i ponownego wykorzystania fragmenty. Dzięki temu kod jest bardziej czytelny, zrozumiały i łatwiejszy do testowania. Ułatwia to także proces debugowania, ponieważ błędy można izolować w konkretnych funkcjach, zamiast przeszukiwać cały program. Ponadto funkcje umożliwiają wielokrotne używanie tego samego fragmentu kodu, co zwiększa efektywność i eliminuje konieczność powielania kodu, zmniejszając ryzyko błędów.

Pytanie 5

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

A. obsługa przycisku ekranu dotykowego
B. obsługa wciśniętego przycisku
C. kod Java
D. kod XML

Brak odpowiedzi na to pytanie.

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

Który element HTML5 służy do wyświetlania zawartości video?

A. <media>
B. <play>
C. <video>
D. <film>

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Element HTML5 <video> jest kluczowym składnikiem do wyświetlania treści wideo w przeglądarkach. Dzięki niemu można łatwo osadzić filmy na stronach internetowych, co sprawia, że są one bardziej interaktywne i atrakcyjne dla użytkowników. Przykład użycia tego tagu wygląda następująco: <video src='film.mp4' controls></video>. Atrybut 'controls' pozwala na dodanie prostych przycisków odtwarzania, pauzy i regulacji głośności, co znacząco poprawia doświadczenia użytkownika. Warto również wspomnieć, że element <video> wspiera różne formaty wideo, takie jak MP4, WebM czy Ogg, co jest istotne w kontekście zgodności z różnymi przeglądarkami i urządzeniami. W praktyce, stosowanie <video> pozwala na łatwe zarządzanie wideo, w tym na dodawanie napisów, ustawienie automatycznego odtwarzania czy loopowania. To sprawia, że jest on niezwykle popularny w tworzeniu nowoczesnych stron internetowych, które chcą dostarczać wartościowe multimedia. Zastosowanie tego elementu jest zgodne z najlepszymi praktykami w zakresie dostępności i użyteczności, co czyni go niezwykle ważnym w dzisiejszym web development.

Pytanie 7

Wskaż rodzaj testów, które przeprowadza się podczas fazy tworzenia kodu źródłowego

A. testy jednostkowe
B. testy kompatybilności
C. testy wdrożeniowe
D. testy wydajnościowe

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Testy jednostkowe to, moim zdaniem, absolutny fundament solidnego programowania. Są to niewielkie, automatyczne testy, które programista pisze zwykle równolegle z kodem albo nawet przed nim, jeśli stosuje się TDD (Test-Driven Development). Chodzi o to, żeby każda najmniejsza część programu – funkcja, metoda czy klasa – była dokładnie sprawdzona, czy zachowuje się zgodnie z założeniami już na etapie pisania kodu. W praktyce wygląda to tak: piszesz sobie funkcję, która np. liczy VAT, i od razu piszesz kilka testów, które sprawdzają, czy dla różnych wartości zwraca ona poprawne wyniki. Gdy coś się zmieni w kodzie, testy jednostkowe pozwalają od razu wychwycić, że coś zepsułeś (albo, oby nie, ktoś inny). Standardy branżowe, jak np. ISTQB czy wytyczne IEEE 829, bardzo mocno podkreślają wagę testów jednostkowych – bez nich zarządzanie jakością oprogramowania jest po prostu niemożliwe na dłuższą metę. W praktyce nawet proste projekty szybko bez nich zamieniają się w chaos. Co ciekawe, dobrze napisane testy jednostkowe ułatwiają refaktoryzację, bo masz pewność, że po zmianach wszystko działa jak należy. W mojej opinii, jeśli ktoś naprawdę poważnie myśli o pracy w branży IT, powinien umieć pisać testy jednostkowe z marszu.

Pytanie 8

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

A. #
B. !
C. ""
D. //

Brak odpowiedzi na to pytanie.

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

Pytanie 9

Jakie są kluczowe etapy resuscytacji krążeniowo-oddechowej?

A. 20 uciśnięć klatki piersiowej na przemian z 5 wdechami ratowniczymi
B. 30 wdechów ratowniczych bez uciśnięć
C. 10 uciśnięć klatki piersiowej bez wdechów
D. 30 uciśnięć klatki piersiowej na przemian z 2 wdechami ratowniczymi

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
30 uciśnięć klatki piersiowej na przemian z 2 wdechami ratowniczymi to standardowy protokół resuscytacji krążeniowo-oddechowej (RKO) zgodny z wytycznymi Europejskiej Rady Resuscytacji (ERC). Uciśnięcia wykonywane są na głębokość około 5-6 cm w tempie 100-120 uciśnięć na minutę. Po 30 uciśnięciach wykonuje się 2 wdechy ratownicze, które powinny być wykonywane z odpowiednią siłą, aby unieść klatkę piersiową poszkodowanego. Taka sekwencja jest podstawą pierwszej pomocy i może uratować życie osoby, u której doszło do zatrzymania akcji serca. Resuscytację należy kontynuować do momentu przybycia służb ratunkowych lub odzyskania przytomności przez poszkodowanego.

Pytanie 10

Co to jest CORS (Cross-Origin Resource Sharing)?

A. Technika optymalizacji ładowania zasobów statycznych
B. Protokół komunikacji między różnymi bazami danych
C. Mechanizm bezpieczeństwa, który określa, które domeny mogą uzyskiwać dostęp do zasobów na serwerze
D. Metoda udostępniania API dla aplikacji mobilnych

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
CORS, czyli Cross-Origin Resource Sharing, to mechanizm bezpieczeństwa stosowany w aplikacjach internetowych, który reguluje, które zewnętrzne domeny mają prawo uzyskiwać dostęp do zasobów na serwerze. Jest to szczególnie istotne w kontekście aplikacji klienckich działających w przeglądarkach, gdzie zapytania do różnych źródeł (tzw. cross-origin requests) mogą prowadzić do problemów z bezpieczeństwem, takich jak ataki typu CSRF (Cross-Site Request Forgery) czy XSS (Cross-Site Scripting). Przykładowo, jeśli aplikacja internetowa hostowana na domenie A próbuje uzyskać dane z API na domenie B, serwer na domenie B może poprzez nagłówki CORS określić, czy i jakie żądania od domeny A będą honorowane. Przy odpowiedniej konfiguracji, serwer może zezwolić na dostęp tylko dla zaufanych źródeł, co zapobiega nieautoryzowanym operacjom. W praktyce, stosowanie CORS przyczynia się do stworzenia bezpieczniejszych aplikacji webowych, zgodnych z aktualnymi standardami bezpieczeństwa w sieci, takimi jak W3C i OWASP.

Pytanie 11

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

A. Korzystanie z mocnych, unikalnych haseł
B. Pobieranie plików z niepewnych źródeł
C. Dzielnie się hasłami z przyjaciółmi
D. Zaniedbywanie aktualizacji systemu operacyjnego

Brak odpowiedzi na to pytanie.

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

Pytanie 12

Która z wymienionych bibliotek pozwala na obsługę zdarzeń związanych z myszą w aplikacjach desktopowych?

A. TensorFlow
B. Numpy
C. Qt
D. Django

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Qt to jedna z najpopularniejszych bibliotek, która umożliwia obsługę zdarzeń myszy i klawiatury w aplikacjach desktopowych. Dzięki Qt możliwe jest tworzenie interaktywnych aplikacji, które reagują na kliknięcia, przesunięcia kursora oraz inne zdarzenia generowane przez urządzenia wejściowe. Qt oferuje obszerną dokumentację i gotowe klasy, takie jak QPushButton, QLabel czy QSlider, które mogą nasłuchiwać zdarzeń i dynamicznie zmieniać stan aplikacji. Co więcej, Qt pozwala na implementację niestandardowych zdarzeń i tworzenie zaawansowanych interfejsów graficznych, które są w pełni interaktywne i responsywne.

Pytanie 13

Który z komponentów interfejsu użytkownika umożliwia użytkownikowi wprowadzanie danych tekstowych?

A. Pasek narzędziowy
B. Dialog wyboru pliku
C. Pole tekstowe
D. Przycisk

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Pole tekstowe to element interfejsu użytkownika, który pozwala użytkownikowi na wprowadzanie danych tekstowych. Jest to jeden z najczęściej używanych komponentów UI w aplikacjach desktopowych, mobilnych i webowych. Pole tekstowe umożliwia wprowadzanie haseł, adresów e-mail, wiadomości i innych danych. W nowoczesnych aplikacjach często zawiera walidację, która sprawdza poprawność wpisywanych danych w czasie rzeczywistym. Dzięki swojej elastyczności, pola tekstowe mogą być wykorzystywane w różnorodnych formularzach, ankietach i systemach rejestracji użytkowników, co czyni je nieodzownym elementem aplikacji o dowolnym przeznaczeniu.

Pytanie 14

Która z poniższych właściwości odnosi się do sieci bezprzewodowej?

A. Wymaga zastosowania przewodów do łączenia urządzeń
B. Nie funkcjonuje w obszarach z dużą liczbą urządzeń
C. Jest bardziej narażona na zakłócenia w przesyłaniu danych
D. Nie potrzebuje zabezpieczeń, ponieważ jest domyślnie chroniona

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Sieci bezprzewodowe charakteryzują się tym, że wykorzystują fale radiowe do transmisji danych, co sprawia, że są bardziej podatne na zakłócenia. Zakłócenia te mogą pochodzić z różnych źródeł, takich jak inne urządzenia bezprzewodowe, mikrofalówki, czy nawet fizyczne przeszkody, takie jak ściany. W przypadku sieci Wi-Fi, które są powszechnie stosowane w domach i biurach, sygnał radiowy może być osłabiony przez metalowe obiekty oraz inne materiały budowlane. To zjawisko można zminimalizować, stosując nowoczesne standardy, takie jak IEEE 802.11ac, które oferują lepszą wydajność i stabilność sygnału. Praktycznym przykładem jest sytuacja, w której użytkownicy znajdują się w gęsto zabudowanym obszarze miejskim, gdzie wiele sieci Wi-Fi działa jednocześnie, co zwiększa ryzyko zakłóceń i wpływa na jakość połączenia. Zrozumienie tej cechy sieci bezprzewodowych jest kluczowe dla ich efektywnego użytkowania oraz projektowania.

Pytanie 15

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

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

Brak odpowiedzi na to pytanie.

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

Pytanie 16

Który z wymienionych poniżej wzorców projektowych można zakwalifikować jako wzorzec strukturalny?

A. Fabryka abstrakcyjna (Abstract Factory)
B. Obserwator (Observer)
C. Metoda szablonowa (Template method)
D. Fasada (Facade)

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Fasada (Facade) to wzorzec projektowy, który jest przykładem wzorca strukturalnego. Umożliwia on tworzenie uproszczonego interfejsu dla bardziej złożonego systemu, integrując wiele podsystemów i dostarczając jednolity punkt dostępu. Strukturalne wzorce projektowe skupiają się na organizacji klas i obiektów, a Fasada doskonale wpisuje się w tę kategorię, redukując złożoność i zwiększając czytelność kodu. Wzorzec ten jest szeroko stosowany w architekturze aplikacji, gdzie występuje potrzeba uproszczenia dostępu do skomplikowanych bibliotek lub systemów wewnętrznych.

Pytanie 17

Co oznacza termin 'immutability' w programowaniu funkcyjnym?

A. Kod może być wykonywany równolegle
B. Obiekty są automatycznie usuwane z pamięci
C. Stan obiektu nie może być modyfikowany po jego utworzeniu
D. Funkcje mogą być przypisywane do zmiennych

Brak odpowiedzi na to pytanie.

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

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

A. Dialog modalny działa w tle, podczas gdy dialog niemodalny jest zawsze wyświetlany na pierwszym planie
B. Dialog modalny wymaga zamknięcia, aby powrócić do głównego okna aplikacji, natomiast dialog niemodalny tego nie wymaga
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

Brak odpowiedzi na to pytanie.

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

Pytanie 19

Co to jest kontener Docker?

A. Lekka, samodzielna jednostka oprogramowania, która zawiera wszystko, co aplikacja potrzebuje do uruchomienia
B. Narzędzie do automatycznego testowania interfejsów użytkownika
C. System zarządzania bazami danych NoSQL
D. Graficzny interfejs do zarządzania kodem aplikacji webowych

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Kontener Docker to lekka, samodzielna jednostka oprogramowania, która zawiera wszystko, co aplikacja potrzebuje do uruchomienia: kod, biblioteki, zmienne środowiskowe oraz inne zależności. Dzięki wykorzystaniu technologii wirtualizacji na poziomie systemu operacyjnego, kontenery są bardziej efektywne i oszczędne w użyciu zasobów w porównaniu do tradycyjnych maszyn wirtualnych. Przykładem zastosowania kontenerów Docker jest rozwój aplikacji webowych, gdzie różne mikroserwisy mogą być uruchamiane w osobnych kontenerach, co pozwala na łatwe skalowanie oraz zarządzanie nimi. W praktyce, kontenery umożliwiają programistom szybkie uruchamianie środowisk testowych i produkcyjnych, a także ułatwiają ciągłą integrację i ciągłe wdrażanie (CI/CD), co jest zgodne z najlepszymi praktykami DevOps. W kontekście zarządzania infrastrukturą, kontenery zapewniają spójność środowiska, eliminując problemy związane z "działa na moim komputerze".

Pytanie 20

Które narzędzie służy do automatyzacji procesu budowania aplikacji?

A. Postman
B. Figma
C. Swagger
D. Jenkins

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Jenkins to jeden z najpopularniejszych narzędzi do automatyzacji procesów budowania aplikacji, znany z integracji ciągłej (Continuous Integration, CI) oraz dostarczania ciągłego (Continuous Delivery, CD). Dzięki swojej elastycznej architekturze oraz bogatej bibliotece wtyczek, Jenkins umożliwia automatyzację wielu zadań związanych z budowaniem, testowaniem i wdrażaniem oprogramowania. W praktyce, z Jenkins można skonfigurować zadania, które uruchamiają skrypty budujące po każdej zmianie w kodzie źródłowym, co pozwala na szybkie wykrywanie błędów i zapewnienie jakości. Dobrą praktyką jest definiowanie pipeline'ów (pipelining), które integrują różne etapy, takie jak budowanie, testowanie i wdrożenie w jeden zautomatyzowany proces. Jenkins wspiera wiele języków programowania i środowisk, a także integruje się z narzędziami do zarządzania wersjami, co czyni go niezastąpionym narzędziem w procesie DevOps.

Pytanie 21

Który z poniższych opisów najlepiej charakteryzuje Node.js?

A. System zarządzania bazami danych NoSQL
B. Środowisko uruchomieniowe JavaScript poza przeglądarką, używające silnika V8 z Chrome
C. Biblioteka do tworzenia interfejsów użytkownika w aplikacjach webowych
D. Framework do budowania aplikacji mobilnych przy użyciu JavaScript

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Node.js to środowisko uruchomieniowe JavaScript, które działa na serwerze, a nie tylko w przeglądarkach. Jest zbudowane na silniku V8, który jest również używany w przeglądarce Google Chrome. Dzięki temu, Node.js pozwala na wykonywanie kodu JavaScript na serwerze, co otwiera nowe możliwości dla programistów. Aplikacje napisane w Node.js są zazwyczaj asynchroniczne i oparte na zdarzeniach, co sprawia, że są one wydajne i responsywne. Przykłady zastosowania Node.js obejmują tworzenie serwisów webowych, API oraz aplikacji w czasie rzeczywistym, jak czaty czy gry online. Node.js zapewnia również bogaty ekosystem bibliotek i frameworków, takich jak Express.js, co pozwala na szybkie i efektywne tworzenie aplikacji. Zastosowanie standardów, takich jak RESTful API, w połączeniu z architekturą mikroserwisów, jest przykładami dobrych praktyk przy używaniu Node.js w projektach komercyjnych.

Pytanie 22

Jakie cechy powinien posiadać skuteczny negocjator?

A. intuicja, cierpliwość, asertywność
B. lojalność, nieśmiałość, uczciwość
C. dobra reputacja, przekora, porywczość
D. asertywność, pesymizm, buta

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Skuteczny negocjator powinien mieć zestaw cech, które pozwolą mu osiągać kompromisy, rozwiązywać konflikty i dążyć do korzystnych rozwiązań dla obu stron. Intuicja pozwala wyczuć nastroje rozmówcy, wychwycić niewerbalne sygnały i przewidywać możliwe zagrożenia czy okazje jeszcze zanim druga strona je wprost zasygnalizuje. Cierpliwość jest kluczowa, bo proces dochodzenia do porozumienia bywa żmudny, a presja czasu często prowadzi do pochopnych decyzji. Często miałem okazję obserwować, że ci, którzy potrafią zaczekać na ruch drugiej strony, zyskują przewagę negocjacyjną. Asertywność natomiast pozwala jasno wyrażać swoje oczekiwania i granice, bez agresji i bez uległości – to klasyka wśród dobrych praktyk negocjacyjnych, choć nadal niedoceniana w wielu branżach. Asertywność pomaga uniknąć niedomówień i manipulacji, a także buduje szacunek. W praktyce, na sali negocjacyjnej czy nawet przy codziennych rozmowach z klientami, zestaw tych trzech cech daje naprawdę mocną pozycję. Moim zdaniem nie ma jednego uniwersalnego szablonu, ale właśnie intuicja, cierpliwość i asertywność pojawiają się prawie zawsze w podręcznikach czy na szkoleniach dedykowanych profesjonalistom. Warto je ćwiczyć na co dzień, nawet poza pracą, bo to się po prostu opłaca.

Pytanie 23

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. Anna
B. Krzysztof
C. Patryk
D. Ewa

Brak odpowiedzi na to pytanie.

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

Jak oddziaływanie monotonnego środowiska pracy może wpłynąć na organizm człowieka?

A. Poprawa kondycji fizycznej
B. Zwiększenie odporności na stres
C. Obniżenie koncentracji oraz zwiększone ryzyko popełniania błędów
D. Wzrost poziomu motywacji

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Kiedy w pracy ciągle powtarzamy te same czynności, to może nas to naprawdę zniechęcać. Zauważyłem, że takie monotonne środowisko potrafi sprawić, że gorzej się skupiamy i łatwiej popełniamy błędy. Jeśli pracownicy cały czas robią to samo bez żadnych zmian, to szybko tracą zapał i nie są zadowoleni z tego, co robią. Moim zdaniem, warto czasem zmieniać zadania, żeby wprowadzić trochę świeżości i wyzwań. Dobrze jest też organizować przerwy, bo to pomaga nabrać energii oraz zadbać o fajną atmosferę w pracy.

Pytanie 25

Klasa Mieszkaniec zawiera atrybuty: imie, nazwisko, ulica, nrDomu, rokUrodzenia. W tej klasie umieszczono opisane poniżej konstruktory (zapisano jedynie typy argumentów). Do tworzenia obiektu za pomocą konstruktora kopiującego wykorzystany będzie konstruktor określony w punkcie

A. Mieszkaniec(Mieszkaniec&);
B. Mieszkaniec();
C. Mieszkaniec(string, string, string, int, int);
D. Mieszkaniec(string, string);

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Konstruktor kopiujący to taka fajna metoda, która pozwala nam stworzyć nowy obiekt, będący kopią innego obiektu tej samej klasy. To naprawdę ważny element w programowaniu obiektowym, bo dzięki niemu możemy tworzyć nowe instancje bez konieczności ręcznego wpisywania wartości pól. Taki konstruktor kopiujący dba o to, żeby dane były spójne i integralne, co jest super istotne, zwłaszcza przy obiektach, które mają wskaźniki lub potrzebują dynamicznie przydzielanej pamięci.

Pytanie 26

W dwóch przypadkach opisano mechanizm znany jako Binding. Jego celem jest

W Android Studio:
<TextView android:text="@{viewmodel.userName}" />
W XAML:
<Label Text="{Binding Source={x:Reference slider2}, Path=Value}" />
A. wiązanie oraz eksportowanie plików z różnych modułów aplikacji
B. wiązać właściwości (property) elementu interfejsu użytkownika z danymi lub właściwością innego obiektu
C. zarządzanie mechanizmem obietnic (promises) lub obserwatora (observable) w programowaniu asynchronicznym
D. przetwarzanie zdarzeń kontrolek interfejsu użytkownika przez wywoływanie odpowiednich funkcji

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Wiązanie (binding) w kontekście interfejsów użytkownika, takich jak Android Studio czy XAML, to bardzo kluczowy mechanizm, który pozwala na automatyczne połączenie danych z logiki aplikacji (np. zmiennych, modeli ViewModel) z konkretnymi właściwościami kontrolek na ekranie. Dzięki temu nie trzeba ręcznie programować każdej aktualizacji – wszystko dzieje się „w tle”. Na przykład, jeśli użytkownik zmieni wartość jakiejś kontrolki, takiej jak suwak (Slider), odpowiednia właściwość w klasie ViewModel również się zaktualizuje i na odwrót. To podejście jest zgodne z architekturą MVVM (Model-View-ViewModel), która jest bardzo popularna w aplikacjach mobilnych i desktopowych. Moim zdaniem to ogromna oszczędność czasu i po prostu mniej błędów w kodzie, bo nie trzeba pisać setek linii kodu łączącego UI z danymi. W praktyce binding często umożliwia także walidację danych na bieżąco, reakcje na zmiany oraz poprawia czytelność kodu. Bez tego, nawet proste aplikacje robią się niepotrzebnie skomplikowane i trudne do utrzymania. Przykłady użycia – to chociażby powiązanie tekstu wyświetlanego w TextView z polem w ViewModel, czy automatyczna aktualizacja etykiety, gdy zmienia się wartość suwaka. To jedna z podstawowych rzeczy, które wyróżniają nowoczesne frameworki UI – i szczerze, trudno bez tego wyobrazić sobie dzisiejsze tworzenie aplikacji.

Pytanie 27

Jakie narzędzie można wykorzystać do stworzenia mobilnej aplikacji cross-platform w języku C#?

A. środowisko XCode
B. środowisko Android Studio
C. platformę Xamarin
D. bibliotekę React Native

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Platforma Xamarin to naprawdę ciekawe narzędzie, które pozwala tworzyć aplikacje mobilne na różne platformy (np. Android, iOS) przy użyciu języka C#. Z mojego doświadczenia wynika, że Xamarin jest bardzo ceniony wśród programistów, którzy już znają .NET, bo w zasadzie pozwala używać tej samej logiki biznesowej w kodzie na wszystkie ważne systemy mobilne. To znacznie przyspiesza pracę, bo nie musisz oddzielnie pisać aplikacji na iOS i Androida, tylko duża część kodu jest współdzielona – zwłaszcza modele danych, logika, a nawet część interfejsu jeśli korzystasz z Xamarin.Forms. Przykładowo, budując prostą aplikację do zarządzania zadaniami, można stworzyć praktycznie cały kod w C#, a potem tylko lekko dostosować szczegóły UI pod każdą platformę. Co ważne, Xamarin udostępnia dostęp do natywnych API każdego systemu przez tzw. bindings, więc nie jesteś ograniczony do najprostszych scenariuszy. Microsoft mocno wspiera to rozwiązanie, a jego integracja z Visual Studio jest naprawdę wygodna. Moim zdaniem, jeśli ktoś zna C# i chce robić mobilki, to Xamarin jest jednym z rozsądniejszych wyborów. Oczywiście, obecnie coraz większą popularność zdobywa .NET MAUI, czyli następca Xamarin.Forms, który idzie jeszcze dalej i oferuje wsparcie również dla desktopów. Ale w praktyce, znajomość Xamarina to wciąż bardzo przydatna rzecz.

Pytanie 28

Które z wymienionych praw autorskich nie wygasa po pewnym czasie?

A. Autorskie prawa majątkowe
B. Autorskie prawa osobiste
C. Prawa pokrewne
D. Licencje wolnego oprogramowania

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Autorskie prawa osobiste to rodzaj praw autorskich, które nie wygasają po upływie określonego czasu i są bezterminowe. Obejmują one prawo do autorstwa, oznaczania dzieła swoim nazwiskiem oraz sprzeciwiania się wszelkim zmianom, które mogłyby naruszać reputację twórcy. Prawa osobiste są niezbywalne, co oznacza, że nie można ich przenieść na inną osobę ani sprzedać. Nawet po śmierci twórcy, prawo do ochrony integralności jego dzieła jest respektowane. W praktyce oznacza to, że choć prawa majątkowe mogą wygasnąć (np. po 70 latach od śmierci autora), prawo do bycia uznanym za twórcę trwa wiecznie.

Pytanie 29

Jaki kod może być związany z treścią wygenerowaną w trakcie działania programu Java?

Exception in thread "main" java.lang.ArithmeticException: / by zero
A. if (x > y) ...
B. x = x % y;
C. x = 0;
D. x = tablica[6];

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Kod x = x % y; jest klasycznym przykładem operacji, która może prowadzić do wystąpienia wyjątku ArithmeticException w Javie, szczególnie gdy zmienna y przyjmuje wartość zero. Operator modulo (%) w języku Java nie toleruje dzielenia przez zero – w przeciwieństwie do niektórych innych języków, które mogą zwracać np. NaN lub Infinity, tutaj od razu zostanie zgłoszony wyjątek. Taki wyjątek jest dość powszechny w pracy programisty, zwłaszcza w aplikacjach, gdzie dane wejściowe nie są do końca kontrolowane. Moim zdaniem dobrze jest od razu przyzwyczaić się do zabezpieczania wszystkich operacji dzielenia i modulo poprzez wcześniejsze sprawdzenie wartości dzielnika. Rekomenduje się stosowanie warunków typu if (y != 0) przed wykonaniem takiej instrukcji, co jest zgodne z dobrymi praktykami defensywnego programowania. Dodatkowo, w środowiskach produkcyjnych często otacza się te fragmenty kodu blokiem try-catch, aby elegancko obsłużyć wyjątek i np. wyświetlić użytkownikowi zrozumiały komunikat. Warto pamiętać, że ArithmeticException dziedziczy po RuntimeException, a więc nie musimy jej jawnie obsługiwać, ale nie oznacza to, że powinniśmy ją ignorować – w dobrze napisanym kodzie zawsze należy przewidywać takie sytuacje. Z mojego doświadczenia wynika, że najwięcej błędów z tym związanych pojawia się w aplikacjach przetwarzających dane liczbowe, gdzie nawet niepozorna operacja modulo może „wywalić” cały proces, jeśli nie zostanie odpowiednio zaopiekowana.

Pytanie 30

Zapisany fragment w Pythonie ilustruje:

pierwiastki = {"N":"Azot","O":"Tlen","P":"Fosfor","Si":"Siarka"}
A. stos
B. kolejkę (LIFO)
C. tablicę asocjacyjną (słownik)
D. strukturę danych

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
W tym pytaniu chodziło o rozpoznanie tablicy asocjacyjnej (czyli słownika) w języku Python. Taka struktura danych pozwala bardzo szybko przypisywać wartości do kluczy i potem je równie sprawnie odnajdywać, co jest superpraktyczne w codziennych zadaniach programistycznych. Taki słownik, jak w przykładzie, gdzie symbole pierwiastków są kluczami, a ich polskie nazwy wartościami, pokazuje typowe zastosowanie tej struktury do przechowywania powiązanych danych bez konieczności przeszukiwania całej listy po kolei. Moim zdaniem słowniki to w ogóle jeden z najwygodniejszych wynalazków Pythona – nie musisz się martwić o kolejność, wystarczy znać klucz i już masz wartość. W branży wykorzystuje się słowniki na potęgę: do mapowania konfiguracji, przechowywania danych z plików JSON, czy nawet jako szybki cache. Warto dodać, że słowniki w Pythonie od wersji 3.7 zachowują kolejność dodania elementów, co czasem pomaga w czytelności kodu, chociaż to raczej miły „bonus” niż must-have. W kontekście dobrych praktyk zawodowych zawsze pilnuję, żeby klucze były niezmiennikami (np. stringi czy liczby), bo tego wymaga Python, a wartości mogą być dowolne. Jeżeli ktoś planuje automatyzować jakieś procesy lub pracować z danymi, bez słowników się nie obejdzie. To trochę taki niepozorny, a bardzo potężny „narzędzie” w arsenale każdego programisty.

Pytanie 31

Wartość liczby 1AF, zapisana w systemie szesnastkowym, po przeliczeniu na system dziesiętny wynosi

A. 6890
B. 26
C. 257
D. 431

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Słuchaj, liczba szesnastkowa 1AF to w systemie dziesiętnym 431. Przeliczenie robimy tak: (1 * 16^2) + (10 * 16^1) + (15 * 16^0). To jest jedna z podstawowych rzeczy, które musisz znać przy konwersji liczb. Szczególnie przydaje się to w programowaniu i ogólnie w informatyce, gdzie często mamy do czynienia z różnymi systemami liczbowymi.

Pytanie 32

Który z podanych algorytmów można zrealizować zarówno w sposób iteracyjny, jak i rekurencyjny?

A. Algorytm generowania liczb losowych
B. Algorytm mapowania kluczy w tablicach asocjacyjnych
C. Algorytm sortowania bąbelkowego
D. Algorytm wyszukiwania binarnego

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Algorytm wyszukiwania binarnego może być zaimplementowany zarówno iteracyjnie, jak i rekurencyjnie. Wyszukiwanie binarne polega na podzieleniu przeszukiwanej tablicy na dwie części i porównaniu elementu środkowego z wartością, której szukamy. Jeśli element nie zostanie znaleziony, algorytm przeszukuje jedną z połówek tablicy. Rekurencyjna wersja tego algorytmu jest często bardziej elegancka i prostsza w implementacji, natomiast iteracyjna bywa bardziej wydajna pod względem zużycia pamięci.

Pytanie 33

Na przedstawionym obrazie widać fragment emulacji systemu iOS z prostą aplikacją. Górna część ekranu nachodzi na pasek stanu baterii. Który z poniższych zapisów powinien zostać użyty w miejscu znaków zapytania, aby ustawić jedynie marginesy górne tylko dla systemu iOS?

Ilustracja do pytania
A. x:TypeArguments="Thickness" <br/> (0, 20, 0, 0)
B. x:TypeArguments="Thickness"<br/> iOS= "0, 0, 0, 0"<br/> Android= "0, 20, 0, 0"<br/> WinPhone= "0, 0, 0, 0"
C. x:TypeArguments="Thickness"<br/> iOS= 20
D. x:TypeArguments="Thickness"<br/> iOS= "0, 20, 0, 0"<br/> Android= "0, 0, 0, 0"<br/> WinPhone= "0, 0, 0, 0"

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Odpowiedź czwarta jest prawidłowa, ponieważ prawidłowo wykorzystuje mechanizm OnPlatform w XAML do zastosowania specyficznych ustawień dla różnych platform. W przypadku iOS zastosowano margines górny wynoszący 20 jednostek, co jest konieczne, aby uwzględnić przestrzeń zajmowaną przez status bar systemowy. Takie podejście jest zgodne z dobrymi praktykami projektowania aplikacji wieloplatformowych, gdzie różne platformy mogą wymagać różnych ustawień interfejsu użytkownika. Przykładowo, w aplikacjach tworzonych przy użyciu Xamarin.Forms, korzystanie z OnPlatform pozwala na dynamiczne dostosowywanie interfejsu w zależności od platformy, co zwiększa elastyczność i poprawia doświadczenie użytkownika. Dodatkowo, zastosowanie marginesów tylko dla platformy iOS pozwala na zachowanie spójności i pełną kontrolę nad wyglądem aplikacji na innych platformach takich jak Android czy Windows Phone, gdzie takie dostosowanie nie jest konieczne. Uwzględnienie tych różnic jest kluczowe dla tworzenia aplikacji, które wyglądają i działają dobrze na wszystkich docelowych urządzeniach.

Pytanie 34

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

Python:C++/C#/Java:
x = 5.96;
b = int(x);
double x = 5.96;
int b = (int)x;
A. 5
B. 596
C. 6
D. 5.96

Brak odpowiedzi na to pytanie.

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

Pytanie 35

Które z wymienionych zastosowań najlepiej definiuje bibliotekę jQuery?

A. Budowanie aplikacji mobilnych
B. Ułatwienie manipulacji DOM oraz obsługi zdarzeń w JavaScript
C. Projektowanie struktur baz danych
D. Tworzenie interfejsów w programach desktopowych

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
jQuery to popularna biblioteka JavaScript, która ułatwia manipulację DOM (Document Object Model), obsługę zdarzeń oraz wykonywanie animacji na stronach internetowych. Dzięki jQuery programiści mogą znacznie skrócić ilość kodu potrzebnego do realizacji operacji na elementach HTML. Biblioteka ta zapewnia również wygodny sposób na wykonywanie asynchronicznych żądań HTTP (AJAX), co pozwala na dynamiczne pobieranie danych z serwera bez konieczności przeładowywania całej strony. jQuery jest szeroko stosowane w projektach, które wymagają interaktywności oraz lekkich efektów wizualnych. Choć w ostatnich latach jego popularność spadła na rzecz bardziej zaawansowanych frameworków takich jak React czy Angular, jQuery nadal jest cenione za prostotę, wydajność oraz bogaty ekosystem gotowych wtyczek i rozszerzeń.

Pytanie 36

W przypadku przedstawionych kodów źródłowych, które są funkcjonalnie równoważne, wartość, która zostanie zapisana w zmiennej b po wykonaniu operacji, to

Python:C++ / C# / Java:
x = 5.96;
b = int(x);
double x = 5.96;
int b = (int)x;
A. 5
B. 6
C. 596
D. 5.96

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
W tym zadaniu mamy do czynienia z fajnym przykładem konwersji liczby 5.96 na liczbę całkowitą w różnych językach, takich jak Python czy C++. Kiedy robimy rzutowanie, to po prostu odcinamy część ułamkową, co daje nam 5 w zmiennej b. To jest trochę klasyczne rzutowanie albo konwersja typu, gdzie w większości języków po prostu się to robi. Ciekawostką jest, że w Pythonie działa to przez funkcję int(), która zawsze zaokrągla w dół. A w C++ czy Javie używasz po prostu (int) i efekt jest ten sam. Warto też zwrócić uwagę, że przy liczbach ujemnych rzutowanie działa inaczej, bo zawsze zmierza w stronę zera. Z doświadczenia wiem, że warto być świadomym użycia takich konwersji, bo w niektórych przypadkach, jak operacje finansowe, nawet małe różnice mogą się okazać bardzo istotne.

Pytanie 37

W aplikacji mobilnej, aby określić warianty grafiki w zależności od wielkości ekranu, należy (uwaga: odpowiedzi wariantowe dla dwóch systemów - sugerować się systemem omawianym na zajęciach)

A. iOS: dodać do nazw plików sufiksy @2x, @3x. Android: umieścić grafikę w odpowiednich folderach drawable: -hdpi, -xhpi, xxhdpi
B. iOS: utworzyć katalogi hdpi, lhpi, xhpi i dodać do nich grafiki. Android: utworzyć katalogi 32x32, 64x64, 96x96 i dodać do nich grafiki
C. iOS: dodać do nazw sufiksy #2x, #3x. Android: dodać do nazw sufiks rozdzielczości: -32x32, -64x64, -96x96
D. iOS: dodać do nazw sufiksy oznaczające rozdzielczość, np. 32ppi. Android: umieścić grafikę w odpowiednich katalogach: 32ppi, 64ppi, 96ppi

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Kiedy chcemy, żeby grafiki w aplikacjach mobilnych wyglądały dobrze na różnych ekranach, musimy zastosować odpowiednie strategie, które zależą od platformy. Na iOS używa się przyrostków @2x lub @3x, co oznacza, że grafiki są przygotowane dla ekranów Retina, które mają wyższą gęstość pikseli. Na Androidzie z kolei, grafiki umieszcza się w folderach drawable z takimi nazwami jak -hdpi, -xhdpi czy -xxhdpi. Dzięki temu system wie, jaką wersję grafiki wybrać w zależności od rozdzielczości urządzenia. Moim zdaniem, taki system pozwala na super jakość obrazów i lepszą wydajność aplikacji.

Pytanie 38

Który z wymienionych składników charakteryzuje się typowym wystąpieniem w diagramie Gantta?

A. Wykaz użytkowników w systemie
B. Oś czasu oraz przedziały czasowe dla zadań
C. Model relacji pomiędzy tabelami w bazie danych
D. Wykaz błędów w projekcie

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Diagram Gantta zawiera oś czasu i zakresy czasowe dla zadań, co pozwala na wizualizację całego harmonogramu projektu. Każde zadanie jest reprezentowane jako pasek na wykresie, którego długość odzwierciedla czas trwania zadania. Diagram ten jest szczególnie pomocny w zarządzaniu złożonymi projektami, gdzie istnieje wiele współzależnych zadań. Dzięki diagramowi Gantta można łatwo określić, które zadania są krytyczne dla terminowego zakończenia projektu oraz jakie są dostępne bufory czasowe. Jest to jedno z najczęściej używanych narzędzi w zarządzaniu projektami.

Pytanie 39

Liczba A4 w zapisie heksadecymalnym ma odpowiadający jej zapis binarny

A. 10100010
B. 10100100
C. 1010100
D. 1011100

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Zapisanie liczby A4 z systemu szesnastkowego (heksadecymalnego) do systemu binarnego to podstawowa umiejętność przy pracy z systemami cyfrowymi. W praktyce każda cyfra heksadecymalna odpowiada dokładnie czterem cyfrom binarnym, co wynika bezpośrednio z faktu, że 16=2^4. Gdy rozbijamy A4 na dwie części, mamy literę A (co oznacza 10 w dziesiętnym) oraz cyfrę 4. Zamieniamy więc A na binarny: 1010, a 4 – 0100. Sklejamy razem i dostajemy 10100100 – to jest właśnie prawidłowa odpowiedź. W rzeczywistych projektach, np. podczas programowania mikrokontrolerów, przy analizie adresów pamięci czy pracy z danymi w protokołach sieciowych, umiejętność szybkiej zamiany szesnastkowych wartości na binarne (i odwrotnie) jest totalnie niezbędna. Moim zdaniem zapamiętanie tych konwersji bardzo przyspiesza debugowanie kodu czy analizę rejestrów sprzętowych. To też podstawa przy pracy z narzędziami typu oscyloskop cyfrowy lub analizator stanów logicznych, gdzie często wartości wyświetlane są w jednym systemie, a dokumentacja posługuje się innym. Branża IT i elektronika wręcz żyją tymi zamianami – nie ma co się oszukiwać, im szybciej to opanujesz, tym mniej błędów popełnisz przy konfiguracji sprzętu czy pisaniu sterowników.

Pytanie 40

Jakie informacje zawiera zestaw instrukcji (ISA) danego procesora?

A. Instrukcje, które procesor jest w stanie wykonać
B. Typy danych, które są trzymane w pamięci
C. Metodę obsługi pamięci podręcznej
D. Układ połączeń między procesorem a innymi elementami

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Zestaw instrukcji, znany jako ISA, to taki jakby słownik poleceń, które procesor potrafi zrozumieć i wykonać. To mega ważny element w projektowaniu komputerów, bo to właśnie od niego zależy, jak dobrze i szybko działa system. Mamy różne rodzaje instrukcji, na przykład te do wykonywania działań matematycznych, logicznych, czy do przenoszenia danych. Popularne zestawy jak x86 albo ARM pokazują, jak programy rozmawiają z procesorem. Jak zrozumiesz ISA, to będzie łatwiej pisać lepszy kod i dostosowywać aplikacje do różnych architektur. No i co ważne, ISA też mówi, jak procesor interpretuje te instrukcje i zarządza danymi, co ma ogromny wpływ na to, jak wydajnie wszystko działa.