Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
Rozpoczęcie: 7 czerwca 2026 22:19
Zakończenie: 7 czerwca 2026 22:27
Egzamin zdany!
Wynik: 37/40 punktów (92,5%)
Wymagane minimum: 20 punktów (50%)
Twój wynik na tle innych
Twój wynik jest lepszy niż 84% podejść do kwalifikacji INF.04.
Porównanie z 22431 zakończonymi podejściami do tej kwalifikacji (dane zbiorcze, bez wyników indywidualnych).
Zachowaj ten wynik na koncie
Załóż darmowe konto albo zaloguj się - ten egzamin przypiszemy do Twojego konta, więc wrócisz do swoich błędów, będziesz śledzić postęp i dostaniesz powtórki dobrane do Twoich odpowiedzi.
A. Metoda ładowania skryptów z zewnętrznych źródeł
B. Technika optymalizacji kodu przez silnik JavaScript
C. Mechanizm zarządzania pamięcią w przeglądarce
D. Proces podnoszenia deklaracji zmiennych i funkcji na górę zakresu
Hoisting to mechanizm w JavaScript, który polega na tym, że deklaracje zmiennych i funkcji są przenoszone na górę zakresu, w którym zostały zadeklarowane. Oznacza to, że możesz używać zmiennych i funkcji przed ich faktyczną deklaracją w kodzie. Na przykład, jeśli zadeklarujesz zmienną za pomocą 'var' lub funkcję, możesz odwołać się do niej wcześniej, a JavaScript zrozumie, o co chodzi. Przykład: jeśli napiszesz 'console.log(x); var x = 5;', to nie dostaniesz błędu, ponieważ 'x' jest hoistowane na górę, jednak jej wartość będzie 'undefined' do momentu przypisania jej wartości. Zrozumienie hoistingu jest kluczowe dla pisania poprawnego kodu w JavaScript, ponieważ może to prowadzić do zaskakujących rezultatów. Warto wiedzieć, że hoisting nie działa w ten sam sposób dla deklaracji 'let' i 'const'. Te zmienne są hoistowane, ale nie mogą być używane przed ich deklaracją, co prowadzi do błędu 'Temporal Dead Zone'. Dlatego zaleca się unikanie deklaracji zmiennych w sposób, który może prowadzić do nieporozumień, i zawsze deklarować zmienne na początku zakresu, w którym będą używane.
Pytanie 2
Diagramem, który służy do śledzenia realizacji zadań przez członków zespołu projektowego, może być
A. Venna
B. związków encji
C. Gantta
D. aktywnosci UML
Diagram Gantta to moim zdaniem jeden z najbardziej praktycznych narzędzi używanych w zarządzaniu projektami, zwłaszcza tam, gdzie zależy nam na zobrazowaniu postępu prac. Ten diagram pozwala nie tylko zobaczyć, jakie zadania są zaplanowane na określony czas, ale też kto za nie odpowiada i jak się mają względem siebie. Osobiście uważam, że z Ganttem łatwiej ogarnąć, kiedy które zadanie się zaczyna, kiedy kończy i czy przypadkiem nie koliduje z innymi. Praktyka pokazuje, że bez takiej wizualizacji łatwo o chaos, szczególnie w większych projektach, gdzie zespół jest rozproszony lub działa zdalnie. Pracując z zespołami spotkałem się z sytuacjami, gdzie właśnie Gantta używało się na codziennych "standupach" do oceny postępu i przydzielania nowych zadań. Standardy branżowe, jak np. PMBOK czy metodyka PRINCE2, także polecają diagram Gantta do śledzenia i raportowania statusu projektu. Co ciekawe, narzędzie to jest wykorzystywane zarówno w klasycznym podejściu do zarządzania projektami, jak i coraz częściej w zespołach zwinnych, choć tam bywa trochę uproszczone. Generalnie – jak dla mnie, umiejętność czytania i tworzenia diagramów Gantta to absolutna podstawa, jeśli ktoś myśli poważnie o pracy przy projektach, niezależnie od branży.
Pytanie 3
Przedstawione w filmie działania wykorzystują narzędzie
A. debuggera analizującego wykonujący kod
B. generatora GUI przekształcającego kod do języka XAML
C. kompilatora dla interfejsu graficznego
D. generatora kodu java
Wybrana odpowiedź jest trafna, bo faktycznie narzędzie pokazane w filmie to generator GUI, który potrafi przekształcać kod do języka XAML. XAML (czyli Extensible Application Markup Language) jest powszechnie używany do deklaratywnego opisywania interfejsów użytkownika, na przykład w aplikacjach WPF czy UWP na platformie .NET. Jak dla mnie, korzystanie z takich generatorów to ogromna wygoda, bo pozwala błyskawicznie przenosić projekt graficzny do formatu czytelnego dla platformy Microsoftu. Z mojego doświadczenia, wiele zespołów programistycznych stosuje takie rozwiązania, żeby oszczędzić czas na ręcznym pisaniu XAML-a (co potrafi być naprawdę żmudne przy dużych projektach). Co ciekawe, takie narzędzia bardzo dobrze współpracują z designerskimi edytorami UI i potrafią zautomatyzować konwersję nawet z innych formatów graficznych, np. Sketch czy Adobe XD do XAML-a. Branżowe standardy zalecają, by wykorzystywać generatorów GUI właśnie do tego celu, bo minimalizuje to liczbę błędów, przyspiesza wdrożenie zmian i ułatwia współpracę między programistami a projektantami. Warto pamiętać, że XAML jest bardzo elastyczny i umożliwia potem ręczną edycję wygenerowanego kodu – czasem powstają drobne poprawki, ale ogólnie to naprawdę przydatne narzędzie. Ogólnie – jeśli tylko projektujesz UI pod .NET, to automatyczna konwersja do XAML-a to jest coś, co warto znać i wykorzystywać w praktyce.
Pytanie 4
Algorytm zaprezentowany w zadaniu można zrealizować w języku Java wykorzystując instrukcję
A. switch
B. if
C. while
D. try
Pętla while w języku Java jest idealna do implementacji algorytmów, które wymagają wielokrotnego wykonywania bloku kodu dopóki określony warunek logiczny pozostaje prawdziwy. W przedstawionym schemacie blokowym widzimy iteracyjny proces, który zaczyna się od przypisania wartości 2 do zmiennej number, a następnie kontynuuje dodawanie 2 do tej zmiennej tak długo, jak długo jej wartość nie osiągnie 10. Struktura ta jest typowym przykładem problemu, który najlepiej rozwiązać za pomocą pętli while. Wyrażenie warunkowe number != 10 jest sprawdzane przed każdą iteracją pętli, co umożliwia zakończenie pętli w momencie, gdy warunek przestaje być prawdziwy. To podejście jest zgodne z dobrymi praktykami programistycznymi, które zalecają minimalizowanie niepotrzebnych obliczeń i zwiększanie czytelności kodu. Pętle while są często stosowane w sytuacjach, gdy liczba iteracji nie jest z góry znana i zależy od dynamicznie zmieniających się warunków, co czyni je wszechstronnym narzędziem w wielu aplikacjach, od przetwarzania danych po kontrolę przepływu w symulacjach komputerowych. Praktyczna znajomość pętli pozwala na efektywne rozwiązywanie problemów w złożonych projektach informatycznych.
Pytanie 5
Który algorytm sortowania opiera się na metodzie "dziel i zwyciężaj"?
A. Sortowanie bąbelkowe
B. Sortowanie szybkie (QuickSort)
C. Sortowanie przez wstawianie
D. Sortowanie przez wybór
QuickSort to algorytm sortowania wykorzystujący podejście 'dziel i zwyciężaj', co oznacza, że dzieli tablicę na mniejsze części wokół elementu zwanego pivotem, a następnie rekurencyjnie sortuje każdą z tych części. Ta strategia pozwala na efektywne sortowanie dużych zbiorów danych w czasie O(n log n) w większości przypadków. Dziel i zwyciężaj to potężne narzędzie algorytmiczne, które znajduje zastosowanie w wielu innych algorytmach, takich jak Merge Sort i algorytmy wyszukiwania binarnego. QuickSort jest często używany w aplikacjach wymagających szybkiego przetwarzania dużych ilości danych.
Pytanie 6
Jaki rodzaj licencji umożliwia dowolne zmienianie oraz rozpowszechnianie kodu źródłowego?
A. Licencja GNU GPL
B. Licencja komercyjna
C. Licencja shareware
D. Licencja OEM
Licencja GNU GPL (General Public License) pozwala na swobodne modyfikowanie i rozpowszechnianie kodu źródłowego, pod warunkiem, że wszelkie zmiany i modyfikacje są również udostępniane na tych samych zasadach. Jest to jedna z najbardziej znanych licencji open-source, która gwarantuje wolność użytkownikom oprogramowania w zakresie jego analizy, modyfikacji oraz redystrybucji. Licencja ta promuje współpracę i transparentność w świecie oprogramowania, umożliwiając społeczności wspólny rozwój projektów i eliminując ograniczenia wynikające z licencji zamkniętych.
Pytanie 7
Jakie stwierdzenie najlepiej tłumaczy cel podziału programu na funkcje (metody)?
A. Umożliwia skrócenie kodu przez eliminację wszelkich komentarzy
B. Ułatwia proces debugowania oraz ponowne wykorzystanie fragmentów kodu
C. Gwarantuje automatyczną kompilację programu
D. Eliminuje potrzebę korzystania ze zmiennych globalnych
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 8
Wykorzystując React.js oraz Angular, stworzono funkcjonalnie równoważne kody źródłowe. Aby móc w metodzie handleSubmit pokazać zawartość kontrolki input w miejscu oznaczonym ???, należy odwołać się do atrybutu o nazwie: React.js:
To właśnie nazwa1 jest właściwym atrybutem, do którego trzeba się odwołać, żeby wyciągnąć wartość inputa zarówno w React, jak i w Angularze. W React, kiedy chcemy pobrać wartość z inputa przez refa, to przekazujemy ref={this.nazwa1}, a potem w handleSubmit robimy this.nazwa1.current.value. To po prostu dokładnie ta sama nazwa, którą przypisałeś do refa, nie ma tu żadnej magii. W Angularze z kolei input posiada ngModel oraz name="nazwa1" – i to name jest kluczowe, bo obiekt f.value generowany przez ngForm zawiera wszystkie pola po kluczach odpowiadających atrybutom name. Dzięki temu możesz potem użyć f.value.nazwa1 i dostajesz wartość inputa. W praktyce zawsze warto pilnować, żeby atrybut name był sensowny i jednoznaczny, bo to na nim opierają się frameworki przy serializacji danych formularza i obsłudze ich stanu. Moim zdaniem to jest jedna z bardziej praktycznych umiejętności przy pracy z dynamicznymi formularzami – jeśli ktoś nie dba o spójność nazw atrybutów name, to łatwo o błędy, które są potem trudne do wykrycia. Warto jeszcze pamiętać, że atrybuty typu id, class czy for mają zupełnie inne zastosowanie – służą do stylowania, powiązań z labelkami, itd. Name natomiast to podstawa logicznej obsługi wartości pól formularza. Często spotykam się z sytuacjami, że ktoś próbuje pobierać dane po id czy class, ale to nie jest zgodne z dobrymi praktykami – dla czytelności kodu i łatwości refaktoryzacji o wiele lepiej korzystać z name. Takie rozwiązania są też zalecane w oficjalnej dokumentacji zarówno React, jak i Angulara.
Pytanie 9
Co to jest JWT (JSON Web Token)?
A. Protokół transferu plików JSON między serwerami
B. Biblioteka JavaScript do manipulacji danymi JSON
C. Otwarty standard do bezpiecznego przekazywania danych w formacie JSON
D. Format kompresji danych JavaScript i HTML w aplikacjach webowych
JWT (JSON Web Token) to otwarty standard, który pozwala na bezpieczne przesyłanie danych między stronami jako obiekt JSON. Token ten składa się z trzech części: nagłówka (header), ładunku (payload) oraz podpisu (signature). Nagłówek określa typ tokenu i używany algorytm szyfrowania, ładunek zawiera dane, które chcemy przekazać, a podpis zapewnia integralność i autentyczność danych. JWT jest powszechnie wykorzystywany w autoryzacji i wymianie informacji między serwerem a klientem, na przykład w aplikacjach webowych, gdzie po zalogowaniu użytkownik otrzymuje token, który może być użyty do uzyskania dostępu do chronionych zasobów. Dzięki temu mechanizmowi, serwer nie musi przechowywać sesji, co zwiększa jego wydajność. Ważnym aspektem JWT jest jego bezstanowość oraz możliwość łatwego skalowania aplikacji, co czyni go popularnym rozwiązaniem w architekturze mikroserwisów. Dobrą praktyką jest stosowanie JWT w połączeniu z HTTPS, aby zapewnić dodatkową warstwę bezpieczeństwa przy przesyłaniu tokenów.
Pytanie 10
Który wzorzec projektowy jest najlepszy do zarządzania tworzeniem obiektów?
A. Decorator
B. Observer
C. Adapter
D. Factory Method
Wybór wzorców projektowych w kontekście zarządzania tworzeniem obiektów jest kluczowy, jednak nie wszystkie wzorce są odpowiednie dla tego celu. Wzorzec Observer, na przykład, jest zaprojektowany do zarządzania powiązaniami między obiektami, umożliwiając jednemu obiektowi informowanie innych o zmianach stanu. Jego zastosowanie w kontekście tworzenia obiektów jest nieadekwatne, ponieważ nie rozwiązuje problemu instancjonowania obiektów, a jedynie komunikacji między nimi. Kolejnym błędnym podejściem jest wzorzec Decorator, który ma na celu dynamiczne dodawanie funkcjonalności do obiektów. Choć może być użyty w kontekście modyfikacji obiektów, nie zajmuje się tworzeniem ich instancji, co czyni go nieodpowiednim w tej sytuacji. Wzorzec Adapter może być mylony z Factory Method, ponieważ również pozwala na współpracę różnych interfejsów, jednak jego główną rolą jest umożliwienie komunikacji pomiędzy niekompatybilnymi interfejsami. Adapter koncentruje się na przekształcaniu interfejsów, a nie na tworzeniu obiektów. W rezultacie, wybór niewłaściwego wzorca może prowadzić do nieefektywnego projektowania, co utrudnia rozwój i utrzymanie aplikacji. Warto zatem dokładnie rozróżniać role poszczególnych wzorców i stosować je w odpowiednich kontekstach, aby unikać typowych pułapek myślowych związanych z ich zastosowaniem.
Pytanie 11
Co zostanie wyświetlone po wykonaniu poniższego kodu w PHP?
Odpowiedź bool(true) bool(false) jest prawidłowa, ponieważ w PHP porównania używane w tym kodzie różnią się pod względem operatorów. Pierwsze porównanie z użyciem operatora == jest porównaniem luźnym, co oznacza, że PHP dokonuje konwersji typów przed porównaniem. W tym przypadku zmienna $x o wartości 5 (typ integer) jest porównywana z $y, która ma wartość '5' (typ string). Po konwersji typów oba są interpretowane jako liczba 5, więc wynik to true. W drugim porównaniu operator === sprawdza zarówno wartość, jak i typ zmiennych. W tym przypadku $x jest integerem, a $y jest stringiem, więc ich typy się różnią. W związku z tym wynik to false. W praktyce, używanie operatora === jest zalecane, ponieważ pozwala uniknąć niespodzianek związanych z automatyczną konwersją typów, co jest często źródłem błędów w kodzie. Warto mieć to na uwadze przy pisaniu bardziej skomplikowanych skryptów, aby zapewnić, że porównania są jednoznaczne i wiarygodne.
Pytanie 12
Zapisany fragment w C# wskazuje na definicję klasy Car, która:
public classCar: Vehicle{ ... }
A. dziedziczy po Vehicle
B. stanowi klasę bazową (nie dziedziczy po żadnej klasie)
C. używa prywatnych pól klasy Vehicle
D. jest powiązana z klasą Vehicle
W przedstawionym kodzie w języku C# mamy definicję klasy Car, która dziedziczy po klasie Vehicle. Dziedziczenie to fundamentalny mechanizm programowania obiektowego, pozwalający jednej klasie przejąć właściwości i metody innej klasy. W praktyce oznacza to, że klasa Car automatycznie zyskuje dostęp do metod i właściwości publicznych oraz chronionych klasy Vehicle, co umożliwia ponowne użycie kodu i zwiększa jego przejrzystość. Dziedziczenie jest kluczowe w projektowaniu skalowalnych systemów, gdzie umożliwia tworzenie bardziej specyficznych klas na podstawie klas ogólnych, co jest zgodne z zasadą DRY (Don't Repeat Yourself). Przykładowo, jeżeli klasa Vehicle zawiera metody takie jak Start() i Stop(), klasa Car może je wykorzystać bez konieczności ponownego definiowania. Dobre praktyki w programowaniu obiektowym zalecają wykorzystywanie dziedziczenia do tworzenia hierarchii klas, które logicznie odwzorowują relacje „jest-a” pomiędzy obiektami w systemie. Ważne jest też unikanie zbyt głębokiego dziedziczenia, co może prowadzić do skomplikowanego i trudnego w utrzymaniu kodu. Zrozumienie dziedziczenia jest kluczowe dla efektywnego wykorzystania wzorców projektowych, takich jak wzorzec projektowy Adapter czy Dekorator.
Pytanie 13
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 umożliwia interakcję z innymi oknami aplikacji, a dialog niemodalny tego nie pozwala
D. Dialog modalny jest ograniczony wyłącznie do aplikacji konsolowych
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 14
Jakie jest oznaczenie komentarza wieloliniowego w języku Java?
A. /* ... */
B. // ... //
C. <!-- ... -->
D. """ ... """
Wielu początkujących programistów myli składnię komentarzy w różnych językach programowania, co jest całkiem naturalne – szczególnie jeśli ktoś ma styczność z wieloma technologiami naraz albo przechodzi z jednego języka na drugi. W przypadku Javy tylko zapis /* ... */ pozwala na tworzenie komentarzy wieloliniowych, czyli takich, które rozciągają się na kilka kolejnych wierszy kodu. Zapis <!-- ... --> jest charakterystyczny dla języków znaczników, takich jak HTML czy XML. Java nie rozpoznaje tego typu komentarza – jeśli spróbujesz go użyć, kompilator po prostu się „zgubi” i potraktuje to jako błąd składni, a nie komentarz. Z kolei // ... // to pomieszanie dwóch różnych rzeczy: w Java używamy podwójnego ukośnika (//) do komentarzy jednoliniowych, czyli takich, które kończą się na końcu danej linii. Powielenie ukośników po obu stronach nie ma żadnego znaczenia dla interpretera Javy i nie działa w praktyce. Natomiast zapis z trzema cudzysłowami """ ... """, choć jest popularny np. w Pythonie do komentowania bloków tekstu lub docstringów, w języku Java nie jest rozpoznawany nawet jako komentarz – kompilator potraktuje taki fragment jako błąd składni lub nieoczekiwany string w kodzie. Niestety, takie błędy wynikają często z przyzwyczajeń wyniesionych z innych języków, co jest typowym problemem przy nauce nowych technologii. Z mojego punktu widzenia warto od początku rozróżniać te różnice, bo potem przychodzi mniej przykrych niespodzianek na etapie kompilowania czy wdrażania aplikacji. Praktyka pokazuje, że nawet doświadczeni programiści czasami odruchowo stosują nieprawidłową notację, szczególnie gdy edytują kod w różnych językach. W Javie zawsze trzymaj się więc zapisu /* ... */ dla komentarzy wieloliniowych i nie próbuj używać formatów z innych ekosystemów – to po prostu tutaj nie zadziała.
Pytanie 15
Który z wymienionych typów kolekcji pozwala na dostęp do ostatnio dodanego elementu w pierwszej kolejności?
A. Kolejka
B. Lista
C. Stos
D. Tablica dwuwymiarowa
Stos to struktura danych działająca na zasadzie LIFO (Last In First Out), co oznacza, że ostatnio dodany element jest usuwany jako pierwszy. Stos znajduje zastosowanie w implementacji mechanizmu wywołań rekurencyjnych, zarządzaniu pamięcią oraz w operacjach związanych z cofaniem i przywracaniem stanu (np. cofanie operacji w edytorach tekstów). Dzięki swojej prostocie stosy są fundamentalnym elementem w programowaniu, szczególnie w językach niskopoziomowych.
Pytanie 16
Jakie składniki są kluczowe w dynamicznym formularzu logowania?
A. Pola tekstowe do wprowadzania danych użytkownika
B. Tabela w bazie danych
C. Plik graficzny
D. Nagłówek HTTP
Pola tekstowe do wprowadzania danych użytkownika są kluczowym elementem dynamicznego formularza logowania. Umożliwiają one użytkownikowi wprowadzenie informacji, takich jak nazwa użytkownika i hasło, co jest niezbędne do uwierzytelnienia w systemie. Formularze HTML wykorzystują tagi <input> do tworzenia pól tekstowych, a ich interakcja z użytkownikiem może być wspierana przez JavaScript lub inne technologie frontendowe, które walidują dane i zapewniają bezpieczeństwo procesu logowania. Pola tekstowe mogą być wzbogacone o atrybuty, takie jak 'required', 'pattern' czy 'type', które dodatkowo zabezpieczają formularz i ułatwiają użytkownikowi poprawne wypełnienie danych.
Pytanie 17
Który z etapów umożliwia zwiększenie efektywności aplikacji przed jej wydaniem?
A. Optymalizacja kodu
B. Tworzenie interfejsu graficznego
C. Testowanie jednostkowe
D. Dodawanie komentarzy do kodu
Optymalizacja kodu to kluczowy etap poprawy wydajności aplikacji przed jej publikacją. Polega na eliminacji zbędnych operacji, poprawie algorytmów oraz minimalizacji użycia zasobów, co pozwala na szybsze działanie aplikacji i zmniejszenie jej zapotrzebowania na pamięć. Optymalizacja kodu obejmuje również refaktoryzację, czyli przekształcenie kodu w bardziej czytelną i efektywną formę bez zmiany jego funkcjonalności. Dzięki optymalizacji aplikacje działają płynniej, szybciej się ładują i oferują lepsze doświadczenie użytkownika, co ma kluczowe znaczenie dla SEO oraz pozycjonowania aplikacji w wyszukiwarkach. Dodatkowo, zoptymalizowany kod jest łatwiejszy w utrzymaniu i rozwijaniu, co przekłada się na długoterminowe korzyści dla zespołu deweloperskiego.
Pytanie 18
Która z poniższych metod najlepiej nadaje się do wizualnego przedstawienia procesu decyzyjnego?
A. Schemat blokowy
B. Lista kroków
C. Pseudokod
D. Drzewo decyzyjne
Drzewo decyzyjne to rzeczywiście najlepsza metoda wizualnego przedstawienia procesu decyzyjnego, ponieważ zostało stworzone dokładnie w tym celu. Jego struktura hierarchiczna idealnie oddaje naturę podejmowania decyzji - zaczynamy od głównego problemu, a następnie rozgałęziamy się na kolejne możliwości w zależności od wybranych opcji. Drzewo decyzyjne pozwala na przejrzyste zobrazowanie wszystkich możliwych ścieżek, jakie może obrać proces w zależności od podjętych wyborów. Każdy węzeł reprezentuje punkt decyzyjny, gałęzie symbolizują dostępne opcje, a liście pokazują końcowe rezultaty. Dzięki temu można łatwo analizować konsekwencje każdej decyzji i porównywać różne scenariusze. Ta metoda znajduje szerokie zastosowanie w biznesie, medycynie, informatyce oraz analizie ryzyka. Pamiętaj o tej wiedzy - umiejętność wyboru odpowiedniego narzędzia wizualizacji jest kluczowa w pracy analitycznej.
Pytanie 19
Termin ryzyko zawodowe odnosi się do
A. zagrożenia wypadkowego, które może wystąpić w miejscu pracy
B. prawdopodobieństwa, że zdarzenia niepożądane związane z pracą spowodują straty, w szczególności negatywne skutki zdrowotne dla pracowników
C. efektów zagrożeń wypadkowych, jakie występują w miejscu zatrudnienia
D. ciężkości skutków niepożądanych zdarzeń związanych z pracą
Pojęcie ryzyka zawodowego w branży BHP jest dość precyzyjnie zdefiniowane i, moim zdaniem, bardzo praktyczne. Chodzi tu właśnie o prawdopodobieństwo, że w wyniku zdarzeń niepożądanych w pracy pojawią się straty – najczęściej w postaci szkód zdrowotnych u pracowników, ale czasem też finansowych czy środowiskowych. To nie tylko sam fakt istnienia zagrożenia, ale ocena, czy i jak bardzo ono może się zaktualizować. W praktyce, np. w branży budowlanej czy energetycznej, ocena ryzyka zawodowego to podstawa organizacji bezpiecznej pracy. W Polsce normy PN-N-18002 i wytyczne Głównego Inspektoratu Pracy jasno mówią, że trzeba analizować zarówno prawdopodobieństwo wystąpienia zagrożenia, jak i potencjalne skutki. Co ciekawe, dla różnych zawodów i stanowisk ocena tego ryzyka może wyglądać zupełnie inaczej – czasem to analiza prostych czynności, czasem złożony audyt. Najlepsze firmy nie ograniczają się do szacowania samego zagrożenia, ale regularnie aktualizują ocenę ryzyka, szkolą pracowników i wdrażają środki zapobiegawcze. Moim zdaniem bez rzetelnej oceny ryzyka nie da się realnie podnieść bezpieczeństwa pracy – to taki fundament wszystkich dalszych działań. Warto zwracać uwagę, że ryzyko zawodowe zawsze wynika z kombinacji zagrożenia i prawdopodobieństwa, a nie tylko z obecności niebezpieczeństwa czy dotychczasowych wypadków.
Pytanie 20
Co zostanie wyświetlone w konsoli po wykonaniu poniższego kodu?
Wynikowy wyraz z konsoli, czyli 'object, undefined, object, number' jest zgodny z zachowaniem typu danych w JavaScript. Funkcja typeof zwraca typ zmiennej, a w przypadku null to zaskakujący wynik, bo według standardów ECMAScript, null jest traktowane jako obiekt. To historyczny błąd w języku, który z biegiem czasu się utrzymał. Z kolei undefined oznacza, że zmienna nie została przypisana, co jest jasne i zrozumiałe. Jeśli chodzi o tablice, w JavaScript są one traktowane jako obiekty, dlatego wynik typeof dla pustej tablicy również to pokazuje. NaN, będące skrótem od 'Not-a-Number', jest szczególnym przypadkiem, który wskazuje, że coś poszło nie tak z operacją arytmetyczną. Jego typ to number, ponieważ w JavaScript wszystko jest na poziomie liczbowym. Wiedza na temat typów danych jest kluczowa w programowaniu, szczególnie przy pracy z danymi i funkcjami, które oczekują konkretnego typu. Użycie typeof jest bardzo praktyczne, gdy chcemy dynamicznie zarządzać typami w kodzie.
Pytanie 21
Jaki jest główny cel normalizacji baz danych?
A. Eliminacja redundancji danych i zapewnienie integralności danych
B. Zwiększenie liczby tabel w celu lepszej organizacji danych
C. Przyśpieszenie zapytań kosztem zwiększenia redundancji
D. Zmniejszenie rozmiaru bazy danych kosztem integralności
Głównym celem normalizacji baz danych jest eliminacja redundancji danych oraz zapewnienie ich integralności. Proces ten polega na przekształceniu danych w taki sposób, aby zminimalizować powielanie informacji, co przekłada się na oszczędność miejsca oraz poprawę wydajności bazy. Normalizacja wyodrębnia dane w sposób, który pozwala na ich logiczne i spójne uporządkowanie, co ułatwia aktualizację oraz usuwanie danych bez ryzyka wprowadzenia niezgodności. Przykładem praktycznego zastosowania normalizacji jest system zarządzania danymi klientów, gdzie informacje o klientach, zamówieniach i produktach są przechowywane w odrębnych tabelach. Dzięki temu można łatwo wprowadzać zmiany w danych klientów, bez wpływu na dane zamówień czy produktów. W branży baz danych, standardy takie jak ACID (Atomicity, Consistency, Isolation, Durability) i zasady dotyczące normalizacji, jak pierwsza, druga czy trzecia forma normalna, stanowią fundamenty dobrych praktyk projektowania baz danych. Zastosowanie tych zasad wpływa na zwiększenie efektywności operacji CRUD (Create, Read, Update, Delete) i zapewnia integralność danych w dłuższym okresie.
Pytanie 22
Który z wymienionych typów danych należy do typu logicznego?
A. int
B. char
C. bool
D. float
Typ danych 'bool' (boolean) jest typem logicznym, który przechowuje jedną z dwóch wartości: 'true' lub 'false'. Typy logiczne są nieodłącznym elementem programowania, ponieważ umożliwiają implementację warunków i pętli sterujących przepływem programu. Typ 'bool' znajduje zastosowanie w praktycznie każdym języku programowania, w tym C++, Java, Python i C#. Operacje logiczne, takie jak 'AND', 'OR' i 'NOT', opierają się na wartościach typu 'bool', co czyni je podstawą dla algorytmów decyzyjnych i strukturalnych. Zastosowanie typów logicznych zwiększa czytelność kodu i pozwala na efektywne zarządzanie warunkami logicznymi.
Pytanie 23
Po uruchomieniu poniższego kodu w języku C++ w konsoli pojawi się ciąg liczb:
inta=1;while(a++ < 6){cout<< a<< " ";}
A. 1 2 3 4 5 6
B. 1 2 3 4 5
C. 2 3 4 5 6
D. 2 3 4 5 6 7
No i właśnie, to jest świetny przykład na to, dlaczego zrozumienie działania operatora postinkrementacji w C++ jest kluczowe. W tym kodzie pętla while wykorzystuje zapis a++ < 6, czyli najpierw sprawdza warunek (porównuje bieżącą wartość a z 6), a dopiero potem zwiększa a o 1. To sprawia, że pierwszy raz sprawdzane jest, czy 1 < 6 – warunek prawdziwy – a dopiero potem a staje się 2. W bloku pętli wypisywane jest już zaktualizowane a, czyli 2. I tak aż do momentu, gdy a osiągnie 6 i warunek będzie fałszywy. W praktykach branżowych bardzo często spotyka się takie niuanse, szczególnie gdy pracuje się z indeksami tablic czy implementuje różne algorytmy. Dobrze jest zawsze pamiętać, jak działają operatory ++ i --, bo ich nieuważne użycie może prowadzić do trudnych do wychwycenia błędów. Warto też zauważyć, że takie rozwiązanie pozwala w prosty sposób uzyskać liczby od 2 do 6 bez dodatkowego zwiększania wartości w środku pętli. Moim zdaniem, jeśli rozumiesz ten mechanizm, to już jesteś o krok dalej niż wielu początkujących programistów – w praktyce docenisz to przy debugowaniu bardziej złożonych fragmentów kodu. A co do dobrych praktyk: zawsze staraj się pisać czytelny kod i nie mieszaj zbyt wielu operacji w jednym wyrażeniu, żeby później nie zastanawiać się, dlaczego wynik jest inny niż oczekiwany.
Pytanie 24
Jakie polecenie w Gicie jest używane do zapisywania zmian w lokalnym repozytorium?
A. git pull
B. git clone
C. git push
D. git commit
Polecenie 'git commit' zapisuje zmiany w lokalnym repozytorium Git. Jest to kluczowy krok w procesie kontroli wersji, ponieważ każdy commit tworzy nową migawkę (snapshot) projektu, która może być w przyszłości przywrócona lub porównana z innymi wersjami. Polecenie to jest często używane razem z opcją -m, która umożliwia dodanie wiadomości opisującej zmiany. Dzięki temu możliwe jest efektywne śledzenie historii zmian w projekcie i przywracanie wcześniejszych wersji w razie potrzeby. Git commit to podstawowe narzędzie w pracy zespołowej nad kodem, szczególnie w środowisku deweloperskim, gdzie wersjonowanie jest niezbędne do zapewnienia stabilności kodu i łatwej współpracy.
Pytanie 25
Szablon MojaTablica oferuje funkcjonalność tablicy z indeksami oraz elementami różnych typów. W oparciu o pokazany kod, który wykorzystuje ten szablon do tworzenia tablicy asocjacyjnej, wskaż definicję, która posługuje się szablonem do zainicjowania tablicy, gdzie indeksami są liczby całkowite, a elementami są napisy?
Deklaracja int tab2[] = new MojaTablica(); jest nieprawidłowa, ponieważ int odnosi się do typów prostych, a nie do tablic asocjacyjnych. MojaTablica tab2 = MOjaTablica(); zawiera literówkę i nie inicjalizuje nowego obiektu. Int tab2 = new MojaTablica(); jest błędne, ponieważ tablica asocjacyjna nie może być przypisana do typu int – wymaga użycia typu zgodnego z definicją szablonu.
Pytanie 26
Jaką kategorię reprezentuje typ danych "array"?
A. Typ wskaźników
B. Typ danych prosty
C. Typ logiczny
D. Typ danych złożony
Tablica ('array') jest przykładem złożonego typu danych, który pozwala na przechowywanie wielu wartości tego samego typu pod wspólną nazwą. Każdy element tablicy jest dostępny za pomocą indeksu, co umożliwia szybkie i efektywne operacje na dużych zbiorach danych. Tablice są szeroko wykorzystywane w programowaniu do przechowywania list, macierzy i innych struktur, gdzie konieczne jest przechowywanie dużych ilości danych tego samego rodzaju. Dzięki tablicom można zorganizować dane w sposób uporządkowany, co ułatwia ich przetwarzanie, sortowanie i wyszukiwanie.
Pytanie 27
Wskaż rodzaj testów, które przeprowadza się podczas fazy tworzenia kodu źródłowego
A. testy kompatybilności
B. testy wdrożeniowe
C. testy jednostkowe
D. testy wydajnościowe
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 28
Które z poniższych narzędzi służy do analizy wydajności stron internetowych?
A. Docker
B. Webpack
C. Lighthouse
D. Postman
Lighthouse to narzędzie opracowane przez Google, które służy do audytowania wydajności stron internetowych. Jego głównym celem jest analiza jakości strony w kontekście szybkości ładowania, dostępności oraz SEO. Podczas audytu Lighthouse generuje szczegółowy raport, w którym przedstawione są różne metryki, takie jak czas do pierwszego renderowania, czas ładowania zasobów, a także ocena dostępności elementów strony. Narzędzie to doskonale wpisuje się w obecne standardy branżowe, zachęcając programistów do stosowania najlepszych praktyk. Przykładowo, wykorzystanie Lighthouse pozwala na identyfikację problemów, które mogą wpływać na doświadczenia użytkowników, takich jak zbyt duże obrazy, zbyt skomplikowane skrypty czy brak kompresji zasobów. Dzięki tym informacjom, deweloperzy mogą wprowadzać konkretne zmiany, które przyczynią się do poprawy wydajności strony, co jest kluczowe w kontekście SEO oraz satysfakcji użytkowników.
Pytanie 29
Który z poniższych elementów UI umożliwia graficzną nawigację pomiędzy różnymi sekcjami aplikacji?
A. Menu
B. Obszar tekstowy
C. Rozwijana lista
D. Przycisk opcji
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.
Pytanie 30
Który z wymienionych elementów interfejsu użytkownika jest charakterystyczny dla aplikacji działającej na komputerze?
A. Routing
B. Strona HTML
C. API REST
D. Przycisk (Button)
Przycisk, czyli ten mały element, co go klikamy w aplikacjach, to naprawdę ważna część interfejsu. Używamy go, żeby coś zainicjować, na przykład zapisać dane czy wywołać jakąś funkcję. Fajnie, że można go dowolnie ustawiać – zmieniać wygląd, rozmiar, a nawet to, jak się zachowuje. Dzięki temu pasuje do każdej aplikacji. W dzisiejszych programach, jak WPF, te przyciski mogą mieć różne kolorowe ikony albo nawet animacje, co sprawia, że aplikacja wygląda super. Generalnie, bez przycisków użytkownik by się w aplikacji nie połapał, bo to dzięki nim możemy nawigować, zatwierdzać formularze czy otwierać nowe okna dialogowe.
Pytanie 31
Jaki będzie wynik działania poniższego kodu JavaScript?
letx=5;lety='10';console.log(x+y);
A. undefined
B. 510
C. error
D. 15
Wynik działania podanego kodu to 510, co może być zaskakujące dla osób nieznających typów danych w JavaScript. W tym przypadku zmienna x jest liczbą całkowitą (5), a zmienna y jest łańcuchem tekstowym ('10'). Kiedy używamy operatora + w JavaScript, następuje tzw. "przesunięcie typów". Gdy jeden z operandów jest łańcuchem, to JavaScript konwertuje pozostałe typy na łańcuch, a następnie wykonuje konkatenację. W efekcie 5 konwertowane jest na '5', a wynik końcowy to '5' + '10', co daje '510'. To zachowanie jest zgodne z regułami języka JavaScript i jego dynamicznym typowaniem. Warto zwrócić uwagę, że taka konwersja może prowadzić do niezamierzonych wyników, dlatego ważne jest, aby zrozumieć, kiedy i jak działają operatory w JavaScript. Dla większej jasności, w sytuacjach, gdy chcemy dodać dwie liczby, lepiej jest upewnić się, że obie zmienne mają ten sam typ danych, np. przez użycie funkcji parseInt() lub parseFloat().
Pytanie 32
Jaki środek ochronny najlepiej chroni przed hałasem w biurze?
A. Okna zamknięte
B. Panele akustyczne wygłuszające
C. Lampy biurowe o niskim poziomie natężenia światła
D. Mata antypoślizgowa
Wygłuszające panele akustyczne to jedno z najlepszych rozwiązań w celu ograniczenia hałasu w biurach i innych miejscach pracy. Panele te redukują odbicia dźwięku i zmniejszają natężenie hałasu, co przekłada się na poprawę koncentracji oraz zmniejszenie zmęczenia i stresu. W biurach typu open space panele akustyczne znacząco poprawiają komfort pracy, umożliwiając prowadzenie rozmów bez nadmiernego zakłócania pracy innych osób. Dodatkowo, wygłuszenie pomaga w ochronie zdrowia pracowników, redukując ryzyko utraty słuchu w miejscach, gdzie występuje wysoki poziom hałasu. Odpowiednie rozmieszczenie paneli pozwala także na lepsze zarządzanie akustyką całego pomieszczenia.
Pytanie 33
Która z poniższych technologii służy do tworzenia aplikacji mobilnych za pomocą języków webowych?
A. Django
B. Spring Boot
C. React Native
D. ASP.NET Core
React Native to popularna technologia opracowana przez Facebook, która umożliwia tworzenie aplikacji mobilnych z wykorzystaniem języków webowych, takich jak JavaScript oraz biblioteki React. React Native umożliwia programistom pisanie kodu raz i uruchamianie go na różnych platformach mobilnych, w tym iOS i Android, co znacząco przyspiesza proces developmentu. Dzięki temu, aplikacje stworzone w React Native zyskują natywną wydajność oraz dostęp do natywnych komponentów, co jest kluczowe dla uzyskania dobrego doświadczenia użytkownika. Przykłady zastosowania React Native obejmują znane aplikacje, takie jak Facebook, Instagram czy Skype, które wykorzystują tę technologię, aby szybko wprowadzać zmiany i aktualizacje. W branży uznaje się, że stosowanie React Native przyczynia się do oszczędności czasu i zasobów, a także wspiera dobre praktyki związane z wielokrotnym użyciem kodu. Warto również zauważyć, że React Native wspiera hot reloading, co pozwala programistom na bieżąco obserwować zmiany w kodzie bez potrzeby ponownego uruchamiania aplikacji.
Pytanie 34
Które z poniższych nie jest narzędziem do zarządzania stanem w aplikacjach React?
A. Context API
B. Webpack
C. Redux
D. MobX
Webpack to narzędzie do budowania, które służy do zarządzania zasobami w projekcie, a nie do zarządzania stanem aplikacji. Jego głównym celem jest przekształcanie i optymalizacja plików, takich jak JavaScript, CSS czy obrazy, przed ich wdrożeniem na produkcję. Dzięki Webpackowi można tworzyć modułowe aplikacje, które pozwalają na łatwe zarządzanie zależnościami. Przykładem użycia Webpacka może być skonfigurowanie go do kompresji plików JavaScript oraz CSS w celu zwiększenia wydajności aplikacji. W praktyce, Webpack jest szeroko stosowany w projektach React, aby efektywnie łączyć i optymalizować kod z różnych źródeł, co przekłada się na szybsze ładowanie się aplikacji. Standardy dotyczące zarządzania projektami przewidują, że narzędzia do budowania, takie jak Webpack, powinny być odpowiednio skonfigurowane w celu zapewnienia najlepszych praktyk dotyczących wydajności i organizacji kodu.
Pytanie 35
Oznaczenie ochrony przeciwpożarowej przedstawione na symbolu wskazuje na
A. system alarmowy przeciwpożarowy
B. przełącznik zasilania
C. rozdzielnię elektryczną
D. punkt remote release
Ten symbol jednoznacznie wskazuje na ręczny ostrzegacz pożarowy, będący kluczowym elementem systemu alarmowego przeciwpożarowego. W praktyce taki przycisk znajdziesz w korytarzach szkół, biur czy dużych hal, zwykle przy wyjściach ewakuacyjnych. Po naciśnięciu wywołuje on alarm w całym obiekcie, pozwalając na szybką reakcję służb oraz ewakuację osób znajdujących się w strefie zagrożenia. Moim zdaniem zrozumienie działania i lokalizacji ręcznych ostrzegaczy jest absolutnie fundamentalne dla bezpieczeństwa pożarowego każdego budynku. Zgodnie z normą PN-EN 54-11 oraz wytycznymi Państwowej Straży Pożarnej, oznaczenie to musi być dobrze widoczne, z wyraźną, czerwoną barwą tła i prostym, czytelnym symbolem. Praktyka pokazuje, że w sytuacjach krytycznych ludzie dużo szybciej reagują na jednoznaczne oznaczenia graficzne niż na same napisy. Właśnie dlatego tak bardzo przykłada się wagę do poprawnej widoczności i rozmieszczenia tych znaków. Sam system alarmowy przeciwpożarowy, którego częścią są takie przyciski, jest podstawą nie tylko ochrony ludzi, ale też minimalizowania strat materialnych, bo pozwala na natychmiastowe powiadomienie odpowiednich służb. Warto zapamiętać, że ręczne ostrzegacze są regularnie testowane podczas przeglądów PPOŻ i ich prawidłowe oznakowanie to wymóg prawny oraz element dobrej praktyki branżowej.
Pytanie 36
Który z wymienionych aktów prawnych odnosi się do ochrony danych osobowych w krajach Unii Europejskiej?
A. Creative Commons
B. Open Source Initiative
C. GDPR (RODO)
D. DMCA
GDPR (RODO) to akt prawny dotyczący ochrony danych osobowych w Unii Europejskiej. Wprowadza on jednolite zasady przetwarzania danych, zwiększając ochronę prywatności obywateli. RODO daje użytkownikom prawo do dostępu do swoich danych, ich poprawiania, a także żądania ich usunięcia (prawo do bycia zapomnianym). Firmy muszą transparentnie informować o celach przetwarzania danych oraz zapewniać odpowiedni poziom zabezpieczeń. Niezastosowanie się do przepisów RODO skutkuje wysokimi karami finansowymi.
Pytanie 37
Jakie jest fundamentalne zagadnienie w projektowaniu aplikacji w architekturze klient-serwer?
A. Użycie serwera jako głównego miejsca przetwarzania danych
B. Brak podziału na role klienta i serwera
C. Funkcjonowanie aplikacji wyłącznie w trybie offline
D. Przeniesienie wszystkich obliczeń na stronę klienta
Użycie serwera jako centralnego miejsca przetwarzania danych jest kluczowym elementem architektury klient-serwer. Serwer pełni rolę centralnego punktu, który zarządza żądaniami klientów, przechowuje dane i zapewnia odpowiedzi na zapytania. Taki model zapewnia większe bezpieczeństwo danych, ułatwia zarządzanie zasobami i umożliwia skalowanie aplikacji w miarę wzrostu liczby użytkowników. Architektura klient-serwer jest szeroko stosowana w aplikacjach webowych, systemach bankowych oraz usługach chmurowych, gdzie konieczna jest centralizacja danych i ich ochrona.
Pytanie 38
Które z wymienionych stanowi przykład struktury dziedziczenia?
A. Klasa Samochód ma dziedziczenie od klasy Pojazd
B. Klasa Samochód i Pojazd nie są ze sobą powiązane
C. Klasa Pojazd ma dziedziczenie od klasy Samochód
D. Klasa Pojazd nie dziedziczy z żadnej klasy
Hierarchia dziedziczenia to struktura klas, w której klasa pochodna dziedziczy właściwości i metody klasy bazowej. Klasa 'Samochód' dziedzicząca po klasie 'Pojazd' jest przykładem prawidłowej hierarchii dziedziczenia – klasa 'Samochód' rozszerza klasę 'Pojazd', dziedzicząc ogólne właściwości pojazdu, takie jak prędkość czy typ silnika. Dziedziczenie umożliwia rozszerzanie istniejącej funkcjonalności bez konieczności przepisywania tego samego kodu, co jest jednym z fundamentów programowania obiektowego.
Pytanie 39
Jaką funkcję pełnią okna dialogowe niemodalne?
A. wstrzymywania działania aplikacji w czasie wprowadzania oraz zatwierdzania danych
B. prezentowania komunikatów, które wymagają potwierdzenia, aby kontynuować działanie aplikacji
C. zarządzania ustawieniami aplikacji, jako okno, które pozostaje widoczne na ekranie przez cały czas trwania aplikacji
D. zarządzania stanem aplikacji za pomocą systemów menu
Okna dialogowe niemodalne, czasem zwane też oknami narzędziowymi albo pomocniczymi, to bardzo praktyczny element interfejsu użytkownika. To, co wyróżnia je spośród innych typów okien, to fakt, że użytkownik może korzystać równocześnie zarówno z tego okna, jak i z głównej aplikacji. Nie blokuje ono działania programu – wszystko jest dostępne w tym samym czasie. Najczęściej takie okna służą do zarządzania ustawieniami aplikacji albo wywoływania funkcji, które użytkownik może modyfikować na bieżąco, bez konieczności zamykania tego okna po każdej zmianie. Przykład z życia: paleta warstw w programach graficznych (np. GIMP czy Photoshop) albo okno stylów w edytorze tekstu. Dla mnie osobiście, taki model pracy jest dużo wygodniejszy niż korzystanie z okien modalnych, bo pozwala płynnie zmieniać ustawienia bez przerywania pracy. Dobrą praktyką w branży jest, żeby okna niemodalne nie zasłaniały kluczowych elementów interfejsu i były jasno oznaczone, by użytkownik wiedział, że może je w każdej chwili zamknąć, nie tracąc postępów. Takie podejście jest wręcz rekomendowane w wytycznych projektowania UX publikowanych przez Apple czy Microsoft (np. Human Interface Guidelines). Okna niemodalne są szczególnie ważne w aplikacjach wymagających ciągłego dostępu do narzędzi lub parametrów, np. edytorach grafiki, IDE czy programach CAD. Warto o tym pamiętać, projektując bardziej złożone systemy.
Pytanie 40
Który z wymienionych dokumentów jest najczęściej stosowany w zarządzaniu pracą zespołu Scrum?
A. Lista zasobów ludzkich
B. Specyfikacja techniczna
C. Diagram Gantta
D. Product backlog
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.