Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 26 maja 2026 19:49
  • Data zakończenia: 26 maja 2026 20:16

Egzamin zdany!

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

Która z wymienionych cech dotyczy klasy statycznej?

A. Może zawierać wyłącznie statyczne pola i metody
B. Nie może zawierać ani zmiennych, ani metod
C. Jest automatycznie usuwana po zakończeniu działania programu
D. Może być dziedziczona przez klasy potomne
Klasa statyczna to klasa, która może zawierać tylko statyczne pola i metody. Tego rodzaju klasy są często wykorzystywane do implementacji narzędziowych funkcji, które nie wymagają tworzenia instancji obiektu. Klasy statyczne są typowe dla języków takich jak C# czy Java, gdzie mogą one pełnić rolę kontenerów na metody pomocnicze (np. klasa 'Math' w C#). Główną zaletą klas statycznych jest to, że można je wywoływać bez konieczności tworzenia instancji, co znacząco upraszcza kod i zwiększa jego czytelność. Klasy statyczne zapewniają również bezpieczeństwo w dostępie do danych, ponieważ eliminują ryzyko przypadkowego zmodyfikowania instancji obiektu.

Pytanie 2

Jakie są różnice między procesem kompilacji a interpretacją kodu?

A. Interpretacja umożliwia tworzenie bibliotek dynamicznych, a kompilacja bibliotek statycznych
B. Kompilacja jest stosowana jedynie w programowaniu obiektowym
C. Kompilacja wymaga użycia debuggera, natomiast interpretacja tego nie potrzebuje
D. Kompilacja przekształca cały kod źródłowy przed jego wykonaniem, podczas gdy interpretacja tłumaczy kod na bieżąco
Kompilacja i interpretacja to dwa różne sposoby, żeby uruchomić kod. Kiedy kompilujesz, to cały kod jest zamieniany na język maszynowy przed uruchomieniem programu, a na końcu dostajesz plik, który można odpalić. Z kolei w interpretacji, kod jest analizowany i wykonywany linia po linii „na żywo”. Kompilacja jest bardziej typowa dla języków takich jak C czy C++, a interpretacja jest popularna w językach skryptowych jak Python czy JavaScript. Kompilacja daje większą wydajność, ale musisz poczekać, aż cały kod się skompiluje, a interpretacja pozwala na szybkie testowanie i łatwiejsze znajdowanie błędów.

Pytanie 3

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

A. Django
B. Qt
C. TensorFlow
D. Numpy
Numpy to biblioteka do obliczeń numerycznych w języku Python i nie posiada narzędzi do obsługi zdarzeń graficznych w aplikacjach desktopowych. Django to framework do budowy aplikacji webowych w Pythonie, koncentrujący się na backendzie, a nie na tworzeniu GUI czy interakcji z myszą. TensorFlow to biblioteka do uczenia maszynowego i przetwarzania danych, nieprzystosowana do tworzenia aplikacji desktopowych obsługujących zdarzenia myszki i klawiatury.

Pytanie 4

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

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

Pytanie 5

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

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

Pytanie 6

Która z poniższych metod HTTP jest idempotentna?

A. PATCH
B. CONNECT
C. GET
D. POST
Wybór metod HTTP, które nie są idempotentne, może prowadzić do zamieszania i nieporozumień w aplikacjach webowych. Metoda POST, w przeciwieństwie do GET, jest zazwyczaj stosowana do tworzenia nowych zasobów na serwerze. Każde wywołanie POST może prowadzić do utworzenia nowego wpisu lub zmiany stanu zasobu, co sprawia, że jest to operacja nieidempotentna. Przykładowo, korzystając z metody POST do przesyłania formularzy rejestracyjnych, każdy nowy użytkownik powoduje dodanie nowego wpisu do bazy danych. Z kolei metoda PATCH jest używana do częściowej aktualizacji istniejącego zasobu. W przypadku wielokrotnego zastosowania tej samej poprawki, stan zasobu może się zmieniać, co również klasyfikuje ją jako nieidempotentną. Dodatkowo, metoda CONNECT, służąca do nawiązywania tuneli przez serwer proxy, w typowym użyciu nie może być uznana za idempotentną, ponieważ jej działanie zależy od kontekstu i może prowadzić do różnych rezultatów przy wielokrotnym wywoływaniu. Dlatego, przy projektowaniu API, istotne jest zrozumienie różnicy między metodami idempotentnymi a nieidempotentnymi, aby uniknąć nieprzewidywalnych skutków i zapewnić spójność w interakcji z serwerem.

Pytanie 7

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 sufiksy oznaczające rozdzielczość, np. 32ppi. Android: umieścić grafikę w odpowiednich katalogach: 32ppi, 64ppi, 96ppi
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 plików sufiksy @2x, @3x. Android: umieścić grafikę w odpowiednich folderach drawable: -hdpi, -xhpi, xxhdpi
D. iOS: dodać do nazw sufiksy #2x, #3x. Android: dodać do nazw sufiks rozdzielczości: -32x32, -64x64, -96x96
Lepiej nie używać oznaczeń w stylu 32ppi czy 64ppi, bo to nie pasuje do żadnej z tych platform. To bardziej pasuje do druku, a nie aplikacji mobilnych. Foldery 32x32 czy 64x64 też nie mają sensu w kontekście Androida czy iOS. Jak stworzysz foldery o nazwach lhpi czy 32x32 to może być problem z wyświetlaniem grafiki na różnych urządzeniach. Z mojego doświadczenia, lepiej trzymać się ustalonych standardów, żeby uniknąć błędów.

Pytanie 8

Zapis w języku C# przedstawia definicję klasy Car, która:

public class Car: Vehicle { ... }
A. używa pól prywatnych klasy Vehicle
B. jest klasą podstawową (nie dziedziczy po innej klasie)
C. odziedzicza po Vehicle
D. jest zaprzyjaźniona z klasą Vehicle
Wiele osób, zwłaszcza na początku nauki C#, myli się co do znaczenia składni dwukropka w definicji klasy. W zapisie public class Car : Vehicle {...}, dwukropek nie oznacza używania pól prywatnych klasy bazowej ani nie wskazuje na jakiś specjalny przywilej dostępu czy przyjaźń między klasami (w C# nie ma nawet koncepcji klasy zaprzyjaźnionej, jak np. w C++). To zamieszanie często wynika z tego, że w niektórych językach programowania przyjaźń albo szczególny dostęp rzeczywiście istnieje, ale nie w C#. Kolejnym błędem jest założenie, że taka klasa jak Car nie dziedziczy po innej klasie i jest całkowicie samodzielna — to nieprawda, bo wyraźnie wskazano Vehicle jako bazę. Jeśli chodzi o prywatne pola, zgodnie z mechanizmem hermetyzacji w C#, nawet klasa pochodna nie ma do nich bezpośredniego dostępu. Jeśli byśmy chcieli udostępnić pola potomnym klasom, trzeba by użyć modyfikatora protected zamiast private. Natomiast żadna z tych odpowiedzi nie dotyczy też mechanizmu przyjaźni, bo to po prostu nie funkcjonuje w tej technologii. Często spotykam się z tym, że myli się dziedziczenie z kompozycją albo błędnie interpretuje możliwości dostępu do składowych klas bazowych. Dobrze jest pamiętać, że w programowaniu obiektowym C# kluczową rolę odgrywają jasno określone relacje dziedziczenia i stosowanie odpowiednich modyfikatorów dostępu. To nie tylko wpływa na bezpieczeństwo kodu, ale też na jego utrzymanie i czytelność, szczególnie przy rozwoju większych projektów.

Pytanie 9

Który z wymienionych dokumentów jest najczęściej stosowany w zarządzaniu pracą zespołu Scrum?

A. Product backlog
B. Diagram Gantta
C. Specyfikacja techniczna
D. Lista zasobów ludzkich
Product backlog to taki ważny dokument w Scrumie, właściwie to serce całego projektu. Zawiera listę funkcji, które chcemy mieć w produkcie, a wszystko to jest poukładane według tego, co jest najważniejsze. Fajnie, że ten dokument jest żywy – zmienia się w miarę jak rozwija się projekt i dostajemy nowe info od klienta. Dzięki temu zespół może się skupić na tym, co naprawdę ma znaczenie, a to sprawia, że dostarczamy wartość w rytm iteracji. Ta elastyczność backlogu to mega atut, bo pozwala na szybkie reagowanie na zmiany w wymaganiach, a to w dzisiejszym świecie projektowym jest kluczowe.

Pytanie 10

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

A. 10100010
B. 1010100
C. 10100100
D. 1011100
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 11

Dokumentacja, która została przedstawiona, dotyczy algorytmu sortowania

To prosta metoda sortowania opierająca się na cyklicznym porównywaniu par sąsiadujących ze sobą elementów i zamianie ich miejscami w przypadku, kiedy kryterium porządkowe zbioru nie zostanie spełnione. Operacje te wykonywane są dopóki występują zmiany, czyli tak długo, aż cały zbiór zostanie posortowany.
A. szybkie (Quicksort)
B. bąbelkowe
C. przez wstawianie
D. przez wybór
Opisany w pytaniu algorytm to właśnie sortowanie bąbelkowe (ang. bubble sort). Polega ono na wielokrotnym przechodzeniu przez zbiór danych i zamienianiu miejscami sąsiadujących elementów, jeśli są w złej kolejności. Czynność ta powtarzana jest do momentu, gdy cały zbiór zostanie uporządkowany i żadne zamiany nie będą już potrzebne. Moim zdaniem, to chyba jeden z najbardziej intuicyjnych algorytmów sortowania, jakie się poznaje na początku nauki programowania – łatwo go zaimplementować, bo wymaga właściwie tylko dwóch pętli i porównania sąsiednich elementów. W praktyce bubble sort raczej rzadko używa się w profesjonalnych projektach, bo jego złożoność czasowa to O(n^2), co przy dużych zbiorach jest nieefektywne. Jednak czasami, na bardzo małych listach albo gdy szybko trzeba zrobić prosty prototyp, to można sięgnąć po „bąbelki”. Z mojego doświadczenia wynika też, że sortowanie bąbelkowe dobrze obrazuje podstawowe zasady algorytmiki, na przykład jak działa iteracja czy wymiana miejscami zmiennych – to przydatne w nauce. W wielu językach programowania, nawet tych nowoczesnych, można spotkać przykłady z bubble sort jako ilustrację podstaw. To taki klasyk – mało kto używa go zawodowo, ale każdy programista powinien wiedzieć, jak działa. Warto też pamiętać, że istnieją optymalizacje bubble sortu, np. wcześniejsze zakończenie, gdy w danej iteracji nie wystąpiła żadna zamiana. No i taka ciekawostka: choć algorytm nie jest specjalnie szybki, to bardzo łatwo go zaimplementować nawet w językach niskopoziomowych, bo nie wymaga dodatkowej pamięci.

Pytanie 12

Jakie narzędzie umożliwia testowanie API w aplikacjach internetowych?

A. Blender
B. Postman
C. Microsoft Excel
D. Node.js
Postman to jedno z najczęściej wykorzystywanych narzędzi do testowania API aplikacji webowych. Umożliwia wysyłanie żądań HTTP, testowanie endpointów oraz monitorowanie odpowiedzi serwera. Dzięki Postmanowi programiści mogą w łatwy sposób analizować dane przesyłane między frontendem a backendem, co jest kluczowe w trakcie budowania nowoczesnych aplikacji opartych na architekturze REST lub GraphQL. Narzędzie oferuje możliwość automatyzacji testów, co przyspiesza proces wykrywania błędów i zwiększa jakość dostarczanych aplikacji. Postman pozwala także na tworzenie skryptów pre-request i testowych, umożliwiając weryfikację poprawności danych oraz sprawdzanie integralności aplikacji na różnych etapach jej rozwoju.

Pytanie 13

Jaką cechą charakteryzuje się sieć asynchroniczna?

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

Pytanie 14

Przedstawione w filmie działania wykorzystują narzędzie

A. debuggera analizującego wykonujący kod
B. kompilatora dla interfejsu graficznego
C. generatora kodu java
D. generatora GUI przekształcającego kod do języka XAML
Wybrana odpowiedź jest trafna, bo faktycznie narzędzie pokazane w filmie to generator GUI, który potrafi przekształcać kod do języka XAML. XAML (czyli Extensible Application Markup Language) jest powszechnie używany do deklaratywnego opisywania interfejsów użytkownika, na przykład w aplikacjach WPF czy UWP na platformie .NET. Jak dla mnie, korzystanie z takich generatorów to ogromna wygoda, bo pozwala błyskawicznie przenosić projekt graficzny do formatu czytelnego dla platformy Microsoftu. Z mojego doświadczenia, wiele zespołów programistycznych stosuje takie rozwiązania, żeby oszczędzić czas na ręcznym pisaniu XAML-a (co potrafi być naprawdę żmudne przy dużych projektach). Co ciekawe, takie narzędzia bardzo dobrze współpracują z designerskimi edytorami UI i potrafią zautomatyzować konwersję nawet z innych formatów graficznych, np. Sketch czy Adobe XD do XAML-a. Branżowe standardy zalecają, by wykorzystywać generatorów GUI właśnie do tego celu, bo minimalizuje to liczbę błędów, przyspiesza wdrożenie zmian i ułatwia współpracę między programistami a projektantami. Warto pamiętać, że XAML jest bardzo elastyczny i umożliwia potem ręczną edycję wygenerowanego kodu – czasem powstają drobne poprawki, ale ogólnie to naprawdę przydatne narzędzie. Ogólnie – jeśli tylko projektujesz UI pod .NET, to automatyczna konwersja do XAML-a to jest coś, co warto znać i wykorzystywać w praktyce.

Pytanie 15

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

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

Pytanie 16

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

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

Pytanie 17

Jakie znaczenie ma poziom dostępności AAA w WCAG 2.0?

A. Średni standard dostępności
B. Najnizszy poziom dostępności
C. Dostosowanie tylko do użytkowników mobilnych
D. Najwyższy poziom dostępności
Niepoprawne odpowiedzi dotyczące poziomu dostępności w WCAG 2.0 wprowadzają w błąd i nie odzwierciedlają rzeczywistego znaczenia poziomów dostępności. Po pierwsze, stwierdzenie o minimalnym poziomie dostępności jest mylące, ponieważ poziom A nie jest jedynie minimalnym standardem, ale również zawiera kluczowe wytyczne. Uznanie poziomu AAA za minimalny standard mogłoby prowadzić do sytuacji, w której użytkownicy niepełnosprawni nie otrzymaliby odpowiedniej pomocy. Kolejnym błędnym podejściem jest określenie poziomu AAA jako średniego poziomu dostępności, co jasno sugeruje błędne zrozumienie hierarchii poziomów w WCAG. W rzeczywistości poziom AAA jest znacznie bardziej wymagający i zawiera dodatkowe kryteria, które są kluczowe dla pełnej dostępności. Ostatnia niepoprawna odpowiedź sugeruje, że poziom AAA dotyczy jedynie użytkowników mobilnych, co jest całkowicie mylne. WCAG 2.0 jest zaprojektowane tak, aby dotyczyło wszystkich platform i urządzeń, nie ograniczając się tylko do mobilnych. Koncentruje się na zapewnieniu dostępności treści dla wszystkich, niezależnie od używanego urządzenia.

Pytanie 18

W klasie pracownik zdefiniowano następujące metody:

pracownik()   { ... }
static void wypisz()   { ... }
int operator== (const pracownik &prac) { ... }
~pracownik()   { ... }
Która z nich jest odpowiednia do dodania elementu diagnostycznego o treści:
cout << "Obiekt został usunięty";
Ilustracja do pytania
A. pracownik
B. operator==
C. ~pracownik
D. wypisz
Metoda wypisz jest często używana do prezentacji danych obiektu użytkownikowi ale nie jest miejscem do umieszczania kodu diagnostycznego dotyczącego usuwania obiektu. Wypisz jest zazwyczaj metodą statyczną lub instancyjną odpowiedzialną za wyświetlanie stanu obiektu i nie zajmuje się zarządzaniem jego cyklem życia. Umieszczenie w niej elementu diagnostycznego dotyczącego destrukcji obiektu mogłoby wprowadzać w błąd użytkownika klasy i utrudniać utrzymanie spójności kodu. Konstruktor klasy pracownik jest odpowiedzialny za inicjalizację obiektu a nie za jego usuwanie. Dodanie elementu cout<<Obiekt został usunięty; w konstruktorze nie miałoby sensu ponieważ ten komunikat dotyczy momentu zniszczenia obiektu a nie jego tworzenia. Konstruktor powinien skoncentrować się na alokacji zasobów i przygotowaniu obiektu do użycia. Operator== jest używany do porównywania dwóch obiektów zazwyczaj w celu sprawdzenia ich równości. Jego użycie do umieszczania komunikatów diagnostycznych związanych z usunięciem obiektu byłoby nieodpowiednie i mylące gdyż jest to operacja logiczna i semantycznie niezwiązana z zarządzaniem cyklem życia obiektów. Rozumienie ról poszczególnych metod w klasach jest kluczowe dla pisania poprawnego i zgodnego z zasadami dobrych praktyk kodu co wpływa na jego czytelność i łatwość utrzymania. Stosowanie odpowiednich metod w odpowiednich kontekstach jest podstawą profesjonalnego programowania obiektowego w C++ i innych językach obiektowych co znacząco zwiększa efektywność i niezawodność oprogramowania.

Pytanie 19

W jaki sposób definiuje się konstruktor kopiujący w ramach klasy?

A. Inicjuje obiekt klasy na podstawie klasy dziedziczącej
B. Tworzy nowy obiekt jako wierną kopię innego obiektu
C. Generuje nowy obiekt i usuwa wcześniejszy
D. Generuje nowy obiekt klasy bez przypisywania wartości
Tworzenie nowego obiektu bez przypisania wartości to zadanie domyślnego konstruktora, który inicjalizuje obiekt, ale nie kopiuje stanu innego obiektu. Tworzenie obiektu na podstawie klasy pochodnej to proces dziedziczenia, a nie kopiowania – w tym przypadku tworzona jest nowa instancja klasy dziedziczącej, ale nie kopiowany jest stan innego obiektu. Usunięcie obiektu i stworzenie nowego nie jest zadaniem konstruktora kopiującego – za usuwanie odpowiada destruktor, który działa automatycznie podczas niszczenia obiektów.

Pytanie 20

Jaką rolę odgrywa program Jira?

A. Zarządzanie edycjami systemu operacyjnego
B. Modyfikowanie arkuszy kalkulacyjnych
C. Planowanie, śledzenie oraz raportowanie zadań projektowych
D. Produkcja grafik 3D
Jira nie służy do zarządzania wersjami systemów operacyjnych – w tym celu wykorzystywane są narzędzia takie jak Puppet, Chef czy Ansible. Tworzenie grafik 3D to domena programów takich jak Blender czy Autodesk Maya, które nie posiadają funkcji zarządzania projektami. Edytowanie arkuszy kalkulacyjnych odbywa się w programach takich jak Microsoft Excel lub Google Sheets, ale narzędzia te nie oferują kompleksowego zarządzania zadaniami w projekcie, co jest główną funkcją Jiry.

Pytanie 21

Który z faz cyklu życia projektu wiąże się z identyfikacją wymagań użytkownika?

A. Przeprowadzanie testów
B. Wdrażanie
C. Etap planowania
D. Analiza
Planowanie koncentruje się na ustaleniu harmonogramu, budżetu i alokacji zasobów, ale nie obejmuje dogłębnej analizy wymagań użytkownika. Implementacja to faza, w której kod jest tworzony na podstawie wcześniejszych ustaleń, ale nie jest to etap zbierania wymagań. Testowanie odbywa się po implementacji i służy wykrywaniu błędów, a nie definiowaniu oczekiwań użytkownika wobec produktu.

Pytanie 22

Sposób deklaracji Klasa2 wskazuje, że

W C++ i C#:
class Klasa2 : Klasa1
W Java:
class Klasa2 extends Klasa1
W Python:
class Klasa2(Klasa1):
A. Klasa2 stanowi klasę bazową
B. Klasa1 jest dzieckiem Klasy2
C. Klasa1 dziedziczy od Klasa2
D. Klasa2 dziedziczy od Klasa1
Deklaracja Klasa2 jako klasy dziedziczącej po Klasa1 oznacza, że Klasa2 przejmuje wszystkie publiczne i chronione (protected) pola oraz metody klasy bazowej (Klasa1). Dziedziczenie to jeden z filarów programowania obiektowego, który umożliwia ponowne wykorzystanie kodu i rozszerzanie funkcjonalności istniejących klas. Dzięki temu Klasa2 może nie tylko korzystać z metod Klasa1, ale także nadpisywać je, co jest kluczowe dla implementacji polimorfizmu. Dziedziczenie pozwala na budowanie hierarchii klas, co prowadzi do lepszego zarządzania kodem i ułatwia jego skalowalność. Przykładem może być klasa Pojazd, z której dziedziczy klasa Samochod, rozszerzając jej funkcjonalność o dodatkowe cechy i metody specyficzne dla samochodów.

Pytanie 23

Kolor Pale Green w modelu RGB przedstawia się jako RGB(152, 251, 152). Jaki jest szesnastkowy kod tego koloru?

A. 98 FB 98
B. A0 FB A0
C. 98 FE 98
D. A0 FE A0
Prawidłowa odpowiedź to RGB(152, 251, 152) zapisane w systemie szesnastkowym jako 98 FB 98. To nie jest przypadkowe – konwersja formatu RGB na HEX polega na przekształceniu każdej ze składowych (czerwony, zielony, niebieski) na odpowiadającą wartość heksadecymalną. W tym przypadku: 152 to 98 w systemie szesnastkowym, 251 to FB, a 152 znowu 98. W praktyce, takie zapisy są absolutną podstawą przy projektowaniu stron internetowych, stylów CSS albo aplikacji mobilnych, gdzie kolory opisuje się właśnie kodami HEX. Moim zdaniem, każdy kto chce działać w grafice komputerowej albo frontendzie, powinien mieć ten mechanizm w jednym palcu. Warto wiedzieć, że standardy W3C przewidują właśnie taki sposób zapisu i przyjmują zarówno notację z #, jak i bez spacji, czyli #98FB98. Często spotkasz ten format np. w plikach stylów LESS, SASS czy nawet podczas korzystania z generatorów palet. Sam nieraz miałem sytuację, że szybka konwersja RGB na HEX ratowała projekt, bo klient przesłał kolory tylko w jednym systemie. Dobrą praktyką jest też zawsze sprawdzać, czy konwersja nie zniekształciła zamierzonego koloru – niektóre programy graficzne lub biblioteki mogą dokonywać zaokrągleń, co minimalnie wpływa na odcień. Warto więc nie tylko ufać narzędziom, ale rozumieć manualnie, jak się to liczy. No, i to co ciekawe – Pale Green jest kolorem dość uniwersalnym, często spotykanym w projektowaniu UI, bo jest delikatny i nie męczy wzroku. Szczerze polecam pobawić się konwersją różnych kolorów, bo to po prostu się przydaje.

Pytanie 24

Która metoda tablicy w JavaScript dodaje nowy element na końcu tablicy?

A. shift()
B. unshift()
C. pop()
D. push()
Metoda push() w JavaScript jest kluczowym narzędziem do dodawania nowych elementów na końcu tablicy. Jest to technika powszechnie stosowana w programowaniu, która pozwala na dynamiczne zarządzanie danymi w aplikacjach. Stosując push(), zyskujemy możliwość zwiększania rozmiaru tablicy w locie, co jest szczególnie przydatne w przypadku pracy z danymi, które mogą się zmieniać lub być nieprzewidywalne. Na przykład, jeśli mamy tablicę przechowującą listę zakupów, możemy dodać nowy przedmiot za pomocą metody push: `zakupy.push('jogurt');`. Warto również zauważyć, że metoda ta zwraca nową długość tablicy po dodaniu elementu, co może być użyteczne w kontekście dalszego przetwarzania lub sprawdzania zawartości tablicy. Zastosowanie tej metody jest zgodne z zasadami dobrego programowania w JavaScript, które zaleca efektywne gospodarowanie pamięcią i elastyczne zarządzanie strukturami danych.

Pytanie 25

Co to jest CI/CD w kontekście rozwoju oprogramowania?

A. Component Isolation/Component Deployment - izolacja i wdrażanie komponentów aplikacji
B. Customer Interface/Customer Design - projektowanie interfejsów zorientowane na klienta
C. Ciągła integracja i ciągłe dostarczanie - praktyki automatyzujące proces wdrażania kodu
D. Code Implementation/Code Delivery - metodyka implementacji i dostarczania kodu
W kontekście rozwoju oprogramowania, pojęcia takie jak Customer Interface/Customer Design, Code Implementation/Code Delivery oraz Component Isolation/Component Deployment, które zostały zaproponowane jako alternatywy dla CI/CD, posiadają fundamentalne różnice, które sprawiają, że nie są one odpowiednie w tej konkretnej sytuacji. Customer Interface/Customer Design koncentruje się na projektowaniu interfejsów użytkownika, co jest istotne, ale nie dotyczy bezpośrednio procesów automatyzacji związanych z integracją i dostarczaniem kodu. Z kolei Code Implementation/Code Delivery odnosi się do ogólnych metod implementacji kodu, co również nie wyczerpuje tematu CI/CD, gdyż nie uwzględnia aspektu automatyzacji i ciągłości procesów. Na koniec, Component Isolation/Component Deployment może sugerować izolację komponentów aplikacji, lecz nie uwzględnia znaczenia ciągłej integracji w kontekście synchronizacji i wczesnego wykrywania błędów. W praktyce, wiele organizacji staje przed wyzwaniami związanymi z integracją różnych komponentów oraz automatyzacji procesów, co może prowadzić do opóźnień w dostarczaniu oprogramowania. Dlatego kluczowe jest zrozumienie, że CI/CD to nie tylko termin techniczny, ale zbiór praktyk, który przynosi realne korzyści w postaci wyższej jakości kodu i szybszego dostarczania rozwiązań do użytkowników.

Pytanie 26

Jaki jest wymagany sposób do realizacji algorytmu sortowania bąbelkowego na n-elementowej tablicy?

A. dwie pętle działające na najwyżej n-elementach każda
B. n-liczby warunków
C. dwie pętle funkcjonujące na co najmniej (n+1) elementach każda
D. jedna pętla operująca na 2n elementach oraz warunek
Jedna pętla nie jest wystarczająca do zaimplementowania sortowania bąbelkowego, ponieważ proces porównywania i zamiany miejscami elementów wymaga wielokrotnego przechodzenia przez tablicę. Pętle działające na (n+1) elementach są błędnym założeniem – algorytm działa na n-elementowej tablicy, a każda iteracja zmniejsza liczbę elementów do porównania. Liczba warunków nie ma kluczowego znaczenia w sortowaniu bąbelkowym – najważniejsza jest struktura iteracyjna, która umożliwia porównywanie elementów w parach, aż do momentu pełnego posortowania tablicy.

Pytanie 27

Jaki jest podstawowy okres ochrony autorskich praw majątkowych w krajach Unii Europejskiej?

A. 70 lat od zgonu autora
B. Bezterminowo
C. 50 lat od chwili pierwszej publikacji utworu
D. 75 lat od daty powstania utworu
Okres 50 lat od pierwszej publikacji utworu odnosi się zazwyczaj do praw pokrewnych, takich jak ochrona nagrań dźwiękowych lub filmowych. Ochrona przez 75 lat od powstania utworu nie jest standardem w UE, choć niektóre kraje mogą mieć takie przepisy w odniesieniu do specyficznych typów dzieł. Bezterminowa ochrona dotyczy wyłącznie autorskich praw osobistych, a nie majątkowych, które zawsze wygasają po określonym czasie.

Pytanie 28

Które z poniżej wymienionych afirmacji najtrafniej charakteryzuje proces interpretacji kodu?

A. Analiza struktury kodu przed tłumaczeniem
B. Tłumaczenie kodu źródłowego na język maszynowy w czasie rzeczywistym
C. Tworzenie pliku wykonywalnego
D. Generowanie bibliotek dynamicznych dla programu
Interpretacja kodu to proces tłumaczenia kodu źródłowego na język maszynowy w czasie rzeczywistym, instrukcja po instrukcji. Jest to charakterystyczne dla języków takich jak Python, JavaScript i Ruby, które używają interpreterów. Dzięki temu program jest wykonywany od razu, bez konieczności wcześniejszego generowania pliku wykonywalnego. Zaletą interpretacji jest szybka analiza i możliwość natychmiastowego testowania kodu, co przyspiesza proces debugowania i prototypowania aplikacji.

Pytanie 29

Który operator w JavaScript sprawdza zarówno równość wartości jak i typu danych?

A. =
B. ===
C. !=
D. ==
Operator === w JavaScript jest powszechnie określany jako operator ścisłej równości. Jego główną zaletą jest to, że porównuje zarówno wartość, jak i typ danych dwóch operandów. Oznacza to, że jeśli porównujesz dwie zmienne, a jedna z nich jest liczbą, a druga łańcuchem znaków, operator ten zwróci false, ponieważ typy są różne. Dla przykładu, porównując 5 === '5', wynik będzie false, podczas gdy w przypadku operatora == wynik byłby true, co może prowadzić do niezamierzonych błędów w logice programu. Użycie operatora === jest zgodne z najlepszymi praktykami programistycznymi, ponieważ unika potencjalnych problemów związanych z automatycznym rzutowaniem typów. W praktyce, zawsze warto stosować operator ścisłej równości, aby zapewnić większą przewidywalność kodu oraz uniknąć trudnych do zdiagnozowania błędów. Dlatego operator === jest preferowany w nowoczesnym programowaniu w JavaScript.

Pytanie 30

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

A. Dzielnie się hasłami z przyjaciółmi
B. Zaniedbywanie aktualizacji systemu operacyjnego
C. Pobieranie plików z niepewnych źródeł
D. Korzystanie z mocnych, unikalnych haseł
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 31

Zaproponowany fragment kodu w Android Studio realizuje metodę nasłuchującą do obsługi wydarzenia:

przycisk = (Button) findViewById(R.id.yes_button);
przycisk.setOnClickListener(new View.OnClickListener() { ... });
A. wybór daty
B. naciśnięcia przycisku
C. zmiany w polu tekstowym
D. zmiany stanu kontrolki Switch
Metoda OnClickListener, to coś, co na pewno warto znać, gdy pracujesz z aplikacjami na Androida. Gdy użytkownik klika przycisk, wywoływana jest metoda onClick. I tu możesz zrobić różne rzeczy, jak na przykład przejść do innego ekranu, zapisać dane albo uruchomić jakąś akcję w tle. To jest dobry przykład wzorca projektowego zwanego Delegacja, który pomaga oddzielić to, co widzisz w interfejsie, od tego, co dzieje się w aplikacji. Dzięki temu łatwiej zarządzać kodem i wprowadzać zmiany. Fajnie jest, gdy logikę umieszczasz w osobnych metodach, bo wtedy testowanie całej aplikacji staje się prostsze. Przykłady? Możesz na przykład użyć OnClickListenera, żeby zrobić logowanie po kliknięciu przycisku lub wysłać formularz. Pamiętaj też, żeby unikać ciężkich operacji w metodzie onClick, żeby aplikacja działała płynnie.

Pytanie 32

Jak nazywa się proces znajdowania i usuwania błędów w kodzie?

A. Debugowanie
B. Kompilowanie
C. Interpretowanie
D. Kompensowanie
Debugowanie to niezwykle istotny etap w procesie tworzenia oprogramowania, polegający na identyfikowaniu i eliminowaniu błędów w kodzie źródłowym. Jest to proces, który wymaga zrozumienia logiki programu oraz umiejętności analitycznych, aby skutecznie odnaleźć przyczynę problemu i ją usunąć. Debugowanie jest kluczowe dla zapewnienia, że aplikacja działa zgodnie z zamierzeniami i jest wolna od błędów, które mogłyby wpłynąć na jej funkcjonalność lub stabilność. W praktyce debugowanie może obejmować różne techniki, takie jak użycie narzędzi do śledzenia wykonania kodu, analizę logów czy testowanie jednostkowe. Programiści często korzystają z dedykowanych środowisk programistycznych (IDE), które oferują funkcje ułatwiające debugowanie, takie jak punkty przerwań czy inspekcja zmiennych. Dobrym przykładem jest Visual Studio, które umożliwia śledzenie wartości zmiennych w czasie rzeczywistym. Debugowanie jest również częścią dobrych praktyk programistycznych, które zakładają regularne testowanie i kontrolę jakości kodu. Dzięki temu możliwe jest nie tylko eliminowanie błędów, ale także poprawa wydajności i bezpieczeństwa aplikacji.

Pytanie 33

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

A. Content Delivery Network - sieć rozproszona geograficznie, służąca do dostarczania treści
B. Content Definition Notation - notacja do definiowania treści w aplikacjach
C. Cross Domain Navigation - metoda nawigacji między domenami w aplikacjach webowych
D. Compressed Data Node - węzeł kompresji danych w architekturze mikrousług
W kontekście aplikacji webowych błędne skróty i pojęcia często prowadzą do nieporozumień dotyczących architektury i technologii. Cross Domain Navigation, chociaż istotne w kontekście bezpieczeństwa i wymiany danych między różnymi domenami, nie jest związane z dostarczaniem treści. Metoda ta dotyczy głównie sposobów nawigacji w aplikacjach, które mogą wymagać zarządzania różnymi politykami CORS (Cross-Origin Resource Sharing), ale nie definiuje sposobów optymalizacji dostarczania treści. Compressed Data Node to termin, który sugeruje węzeł odpowiedzialny za kompresję danych w architekturze mikrousług, ale nie wiąże się z geograficznie rozproszonym dostarczaniem treści, co jest kluczowym aspektem działania CDN. Content Definition Notation to z kolei nieznany termin w literaturze dotyczącej technologii webowej, nie mający powszechnie uznawanej definicji w branży. Błędem myślowym byłoby utożsamianie tych terminów z sieciami dostarczania treści, ponieważ każde z nich ma swoją specyfikę i zastosowanie. W kontekście aplikacji internetowych kluczowe jest zrozumienie, że CDN ma na celu poprawę szybkości i efektywności dostarczania treści, co jest niezrównanie bardziej złożonym i istotnym zagadnieniem niż tylko nawigacja czy kompresja danych. Praktyki związane z sieciami CDN są dobrze udokumentowane i należy je stosować zgodnie z najlepszymi standardami branżowymi, aby zapewnić wysoką jakość usług dla użytkowników.

Pytanie 34

Jakie informacje mogą być zapisywane w cookies przeglądarki?

A. Dane przechowywane w systemie baz danych
B. Kod źródłowy aplikacji internetowej
C. Preferencje użytkownika, takie jak język lub styl strony
D. Prywatne dane użytkownika, na przykład hasła
Preferencje użytkownika, takie jak język strony, motyw kolorystyczny lub preferencje dotyczące układu, są typowymi danymi przechowywanymi w ciasteczkach przeglądarki. Mechanizm ciasteczek pozwala na personalizację doświadczenia użytkownika i jest szeroko stosowany w aplikacjach webowych w celu dostosowania interfejsu do indywidualnych potrzeb. Cookies umożliwiają także zapamiętywanie sesji użytkownika, co pozwala uniknąć konieczności wielokrotnego logowania. Informacje te są przechowywane lokalnie w przeglądarce użytkownika i mogą być odczytywane przez aplikację podczas każdej wizyty. Stosowanie ciasteczek zgodnie z przepisami, takimi jak RODO (GDPR), wymaga informowania użytkownika o ich przeznaczeniu oraz uzyskiwania jego zgody na ich przechowywanie, co zapewnia transparentność i zgodność z prawem.

Pytanie 35

Jakie narzędzie można wykorzystać do tworzenia aplikacji mobilnych typu cross-platform w C#?

A. platformę React Native
B. środowisko Android Studio
C. środowisko XCode
D. platformę Xamarin
Xamarin to potężna platforma do tworzenia aplikacji mobilnych typu cross-platform w języku C#. Dzięki wykorzystaniu technologii .NET, deweloperzy mogą pisać kod raz, a następnie wdrażać go na różnych systemach operacyjnych, takich jak iOS i Android. Xamarin umożliwia korzystanie z natywnych interfejsów użytkownika oraz dostęp do funkcji urządzeń mobilnych, co zapewnia dużą wydajność i płynność działania aplikacji. Przykładowo, aplikacja stworzona w Xamarinie może korzystać z natywnych komponentów UI, co pozwala na zachowanie specyficznych dla platformy wzorców interakcji oraz UX. Dzięki wsparciu dla C# i .NET, deweloperzy mogą również łatwo integrować istniejące biblioteki oraz korzystać z ekosystemu .NET, co znacząco przyspiesza proces deweloperski. Warto również zaznaczyć, że Xamarin jest zgodny z wieloma standardami, co ułatwia współpracę w zespołach projektowych oraz utrzymanie kodu na dłuższą metę.

Pytanie 36

Modyfikator dostępu, który znajduje się przed definicją metody Dodaj() w klasie Kalkulator, powoduje, że

protected void Dodaj() {}
A. jest ona dostępna w programie głównym i może być wywoływana na rzecz instancji klasy Kalkulator
B. nie jest ona dostępna w klasach, które dziedziczą po klasie Kalkulator
C. jest ona dostępna zarówno wewnątrz klasy, jak i w klasach dziedziczących po klasie Kalkulator
D. nie jest ona dostępna z poziomu klas zaprzyjaźnionych z klasą Kalkulator
Modyfikator dostępu protected jest kluczowym elementem programowania obiektowego, umożliwiającym kontrolę nad widocznością i dostępem do składników klasy. Gdy metoda jest oznaczona jako protected, jak w przypadku metody Dodaj() w klasie Kalkulator, oznacza to, że jest ona dostępna nie tylko w ramach tej klasy, ale również w dowolnych klasach, które dziedziczą po klasie Kalkulator. To podejście wspiera koncepcję dziedziczenia, umożliwiając klasom potomnym korzystanie z funkcjonalności klasy bazowej bez konieczności ponownego definiowania metod. Na przykład, jeśli stworzymy klasę DziecięcyKalkulator dziedziczącą po Kalkulator, metoda Dodaj() będzie dostępna w tej klasie potomnej. Takie rozwiązanie jest często stosowane w projektach, gdzie istnieje potrzeba rozszerzania funkcjonalności bazowych klas bez naruszania ich enkapsulacji. Dobre praktyki programistyczne sugerują stosowanie protected tam, gdzie chcemy umożliwić dziedziczenie oraz uniknąć nadmiernego udostępniania elementów klasy zewnętrznym użytkownikom. Dzięki temu kod staje się bardziej modularny i elastyczny, co jest istotne w dużych projektach programistycznych. Zrozumienie roli modyfikatorów dostępu, takich jak protected, jest kluczowe dla efektywnego projektowania i implementacji systemów obiektowych.

Pytanie 37

Która metoda wyszukiwania potrzebuje posortowanej listy do prawidłowego działania?

A. Wyszukiwanie liniowe
B. Wyszukiwanie sekwencyjne
C. Wyszukiwanie binarne
D. Wyszukiwanie z hashem
Wyszukiwanie binarne wymaga posortowanej tablicy do działania, co pozwala na dzielenie tablicy na pół przy każdym kroku, redukując liczbę operacji do O(log n). Algorytm ten działa poprzez porównanie poszukiwanego elementu ze środkowym elementem tablicy – jeśli element jest mniejszy, wyszukiwanie kontynuuje w lewej części tablicy, a jeśli większy, w prawej. Dzięki tej efektywności, wyszukiwanie binarne jest szeroko stosowane w bazach danych, systemach plików oraz aplikacjach, które operują na dużych zbiorach danych. Wyszukiwanie binarne jest prostym, ale potężnym algorytmem, który znacząco skraca czas przeszukiwania dużych zbiorów.

Pytanie 38

Która z metodologii w zarządzaniu projektami umożliwia łatwe dostosowywanie się do zmieniających się potrzeb klienta?

A. Kanban
B. Scrum
C. Model spiralny
D. Model Waterfall
Waterfall to model sekwencyjny, który nie zakłada elastyczności – raz określone wymagania muszą być zrealizowane zgodnie z pierwotnym planem, co utrudnia adaptację do zmian. Kanban umożliwia optymalizację przepływu pracy, ale nie kładzie tak dużego nacisku na iteracyjne dostarczanie funkcjonalności jak Scrum. Model spiralny łączy prototypowanie i iteracje, ale jego struktura nie jest tak elastyczna jak w przypadku Scruma, gdzie zmiany mogą być wprowadzane niemal na każdym etapie sprintu.

Pytanie 39

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/> iOS= "0, 20, 0, 0"<br/> Android= "0, 0, 0, 0"<br/> WinPhone= "0, 0, 0, 0"
B. x:TypeArguments="Thickness"<br/> iOS= 20
C. x:TypeArguments="Thickness"<br/> iOS= "0, 0, 0, 0"<br/> Android= "0, 20, 0, 0"<br/> WinPhone= "0, 0, 0, 0"
D. x:TypeArguments="Thickness" <br/> (0, 20, 0, 0)
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 40

Który z poniższych elementów UI umożliwia graficzną nawigację pomiędzy różnymi sekcjami aplikacji?

A. Obszar tekstowy
B. Rozwijana lista
C. Przycisk opcji
D. Menu
Pasek menu to kluczowy element interfejsu użytkownika, który umożliwia wizualną nawigację pomiędzy różnymi sekcjami aplikacji. Paski menu są powszechnie stosowane w aplikacjach desktopowych i mobilnych, ponieważ pozwalają na szybki dostęp do różnych funkcji oraz ustawień. Dzięki ich hierarchicznej strukturze użytkownicy mogą łatwo odnaleźć potrzebne narzędzia i opcje, co zwiększa intuicyjność i wygodę korzystania z aplikacji.