Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 17 grudnia 2025 13:44
  • Data zakończenia: 17 grudnia 2025 14:02

Egzamin zdany!

Wynik: 29/40 punktów (72,5%)

Wymagane minimum: 20 punktów (50%)

Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

Które z wymienionych działań zwiększa bezpieczeństwo transakcji online?

A. Zastosowanie publicznego Wi-Fi do logowania się na konto bankowe
B. Udostępnianie informacji o karcie kredytowej w e-mailach
C. Nieaktualizowanie oprogramowania przeglądarki
D. Weryfikowanie certyfikatów SSL na stronach zajmujących się transakcjami
Sprawdzanie certyfikatów SSL na stronach transakcyjnych to jeden z najważniejszych kroków w zapewnieniu bezpieczeństwa transakcji internetowych. Certyfikat SSL szyfruje dane przesyłane między użytkownikiem a serwerem, chroniąc je przed przechwyceniem przez osoby trzecie. Adresy stron z certyfikatem SSL zaczynają się od 'https', co wskazuje na bezpieczne połączenie. Certyfikaty SSL zapewniają integralność danych i są podstawą dla każdej strony internetowej obsługującej płatności lub przechowującej dane użytkowników. Zignorowanie tej kwestii naraża użytkowników na ataki typu man-in-the-middle i phishing.

Pytanie 2

Co to jest JWT (JSON Web Token)?

A. Format kompresji danych JavaScript i HTML w aplikacjach webowych
B. Protokół transferu plików JSON między serwerami
C. Biblioteka JavaScript do manipulacji danymi JSON
D. Otwarty standard do bezpiecznego przekazywania danych w formacie JSON
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 3

Co zostanie wyświetlone po wykonaniu poniższego kodu w PHP?

$x = 5; $y = '5'; var_dump($x == $y); var_dump($x === $y);
A. bool(true) bool(true)
B. bool(true) bool(false)
C. bool(false) bool(false)
D. bool(false) bool(true)
Wyniki bool(false) bool(false), bool(true) bool(true) oraz bool(false) bool(true) mogą wydawać się zrozumiałe na pierwszy rzut oka, jednak każdy z tych przypadków zawiera istotne błędy w zrozumieniu mechanizmu porównania w PHP. Porównanie z użyciem operatora ==, który jest porównaniem luźnym, prowadzi do konwersji typów, co nie jest zawsze intuicyjne. Użytkownicy mogą mylnie przyjąć, że porównania opierające się na tym operatorze zawsze zwracają false, gdy zmienne mają różne typy, co jest błędne. W rzeczywistości, w przypadku wyrażenia $x == $y, gdzie $x to integer a $y to string, PHP przekształca zmienną stringową na typ integer przed porównaniem, co skutkuje wynikiem true. W konsekwencji, błędne odpowiedzi mogłyby wynikać z niepełnego zrozumienia działania operatora ===, który wymaga, by zarówno wartość, jak i typ były identyczne. Użytkownicy mogą mylić te dwa operatory i zakładać, że wynik będzie taki sam, niezależnie od typów zmiennych. Warto również zwrócić uwagę na to, jak ważne jest stosowanie operatora identyczności ===, który nie tylko porównuje wartości, ale także typy, co jest zgodne z dobrymi praktykami programowania w PHP. Dzięki temu unika się niejednoznaczności, co jest istotne w skomplikowanych aplikacjach. Wnioskując, kluczem do poprawnych wyników jest znajomość różnicy między porównaniami luźnymi a ścisłymi i świadome używanie odpowiednich operatorów, by unikać nieporozumień.

Pytanie 4

Która z poniższych technologii jest używana do tworzenia animacji na stronach internetowych?

A. XML
B. MySQL
C. HTTP Headers
D. CSS Animations
CSS Animations to technologia, która pozwala na tworzenie dynamicznych efektów wizualnych na stronach internetowych. Umożliwia ona animowanie różnych właściwości CSS, takich jak kolor, położenie, rozmiar czy przezroczystość, w prosty sposób. Dzięki CSS Animations, deweloperzy mogą tworzyć płynne przejścia i efekty bez potrzeby używania JavaScriptu, co zwiększa wydajność i responsywność witryn. Przykładem zastosowania CSS Animations może być animowanie przycisków na stronie, które zmieniają kolor po najechaniu na nie kursorem. Z punktu widzenia dobrych praktyk, warto pamiętać o optymalizacji efektów animacyjnych, aby nie obciążały one zbytnio zasobów przeglądarki. CSS Animations są częścią standardu CSS3, co oznacza, że są szeroko wspierane przez różne przeglądarki i można je łatwo implementować w projektach webowych.

Pytanie 5

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

A. Model relacji pomiędzy tabelami w bazie danych
B. Wykaz użytkowników w systemie
C. Oś czasu oraz przedziały czasowe dla zadań
D. Wykaz błędów w projekcie
Diagram Gantta zawiera oś czasu i zakresy czasowe dla zadań, co pozwala na wizualizację całego harmonogramu projektu. Każde zadanie jest reprezentowane jako pasek na wykresie, którego długość odzwierciedla czas trwania zadania. Diagram ten jest szczególnie pomocny w zarządzaniu złożonymi projektami, gdzie istnieje wiele współzależnych zadań. Dzięki diagramowi Gantta można łatwo określić, które zadania są krytyczne dla terminowego zakończenia projektu oraz jakie są dostępne bufory czasowe. Jest to jedno z najczęściej używanych narzędzi w zarządzaniu projektami.

Pytanie 6

Cytat przedstawia charakterystykę metodyki RAD. Pełne znaczenie tego skrótu można przetłumaczyć na język polski jako:

...(RAD)..., is both a general term for adaptive software development approaches, and the name for James Martin's method of rapid development.

In general, RAD approaches to software development put less emphasis on planning and more emphasis on an adaptive process. Prototypes are often used in addition to or sometimes even instead of design specifications.

Źródło: https://en.wikipedia.org/

A. środowisko refaktoryzacji aplikacji
B. środowisko szybkiego rozwoju aplikacji
C. zintegrowane środowisko programistyczne
D. prototypowanie wsparte testami jednostkowymi
Skrót RAD w świecie IT to, mimo wielu mylących rozszerzeń, nie „środowisko refaktoryzacji aplikacji”, nie „zintegrowane środowisko programistyczne” i zdecydowanie nie „prototypowanie wsparte testami jednostkowymi”. Każda z tych odpowiedzi odwołuje się do pojęć dobrze znanych w branży, ale nie ma bezpośredniego związku z tym, co oznacza RAD. Refaktoryzacja aplikacji to proces poprawiania istniejącego kodu bez zmiany jego funkcjonalności, czyli bardziej kwestia utrzymania i rozwoju jakości niż szybkiego budowania prototypów. Zintegrowane środowisko programistyczne (IDE) to narzędzia takie jak Visual Studio, Eclipse czy IntelliJ, które wspierają programistów w pisaniu kodu, debugowaniu i zarządzaniu projektami. To są środowiska, ale nie metodyki wytwarzania oprogramowania. Natomiast „prototypowanie wsparte testami jednostkowymi” to raczej fragmentaryczny opis technik stosowanych w różnych procesach projektowych, ale nie oddaje idei RAD. Typowym błędem jest mylenie narzędzi z metodykami – to dwie różne rzeczy, choć często idą w parze. RAD to podejście, które pozwala szybko dostarczać działające wersje aplikacji i testować je z użytkownikami końcowymi, zanim powstanie pełna specyfikacja. Bazuje na adaptacyjności, krótkich cyklach iteracyjnych i intensywnym wykorzystaniu prototypowania. Z mojego doświadczenia wynika, że wiele osób myśli o RAD wyłącznie jako o narzędziu lub środowisku do pisania kodu, a to dużo szersza koncepcja, wpływająca na cały sposób prowadzenia projektu. Warto dostrzegać, kiedy dany termin oznacza proces lub filozofię prowadzenia prac, a nie tylko konkretny zestaw narzędzi czy pojedynczą technikę.

Pytanie 7

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

A. window.render
B. window.onload
C. document.ready
D. page.complete
Wszystkie inne odpowiedzi, takie jak "document.ready", "page.complete" oraz "window.render", są niepoprawne w kontekście pytania o zdarzenie wywoływane po całkowitym załadowaniu strony. Odpowiedź "document.ready" odnosi się do jQuery, a nie do czystego JavaScript. To zdarzenie wywoływane jest, gdy DOM jest załadowany, ale niekoniecznie wszystkie zasoby, takie jak obrazy czy arkusze stylów, są już dostępne. Używanie tego zdarzenia może prowadzić do nieporozumień, gdyż programiści mogą zakładać, że strona jest gotowa do pełnej interakcji, gdy w rzeczywistości zachowanie różnych elementów może się różnić w zależności od ładowania zasobów. Z kolei "page.complete" nie jest standardowym zdarzeniem w JavaScript i nie istnieje w dokumentacji, co czyni tę odpowiedź całkowicie błędną. "window.render" również nie jest znanym zdarzeniem w kontekście JavaScript, co może prowadzić do nieporozumień wśród programistów. Używanie niepoprawnych terminów lub zrozumienie ich znaczenia może prowadzić do błędów w kodzie, które z kolei skutkują nieprawidłowym działaniem aplikacji. Dlatego tak ważne jest, aby znać dokładne zdarzenia i ich zastosowanie w kontekście pełnego ładowania strony, co ma kluczowe znaczenie w tworzeniu responsywnych i dobrze działających aplikacji internetowych.

Pytanie 8

Jaki model zarządzania projektami przewiduje, że wszystkie etapy są realizowane jeden po drugim, bez możliwości wrócenia do wcześniejszych faz?

A. Model przyrostowy
B. Metodyki zwinne (Agile)
C. Model kaskadowy (waterfall)
D. Model spiralny
Model spiralny pozwala na wielokrotne przechodzenie przez różne fazy projektu, co daje większą elastyczność. Model przyrostowy umożliwia realizację projektu w etapach, co pozwala na dostarczanie częściowych wersji produktu. Metodyki zwinne (Agile) opierają się na iteracjach i umożliwiają powrót do poprzednich etapów, w zależności od potrzeb i informacji zwrotnych od klienta.

Pytanie 9

Jakie jest kluczowe działanie przy opracowywaniu zbiorów danych do rozwiązania problemu programistycznego?

A. Realizacja algorytmu sortującego
B. Weryfikacja zbiorów danych przed ich zastosowaniem
C. Zmiana języka programowania na bardziej wydajny
D. Wybór odpowiednich struktur danych
Wybór właściwych struktur danych to mega ważny krok, kiedy projektujesz swoje zestawy danych. To, jaką strukturę wybierzesz, ma ogromny wpływ na to, jak szybko i efektywnie będą działać algorytmy. Każda struktura ma swoje plusy i minusy – na przykład listy pozwalają na elastyczne zarządzanie elementami, stosy i kolejki trzymają dane w określonej kolejności, a drzewa czy grafy są już do bardziej skomplikowanych problemów. Dobrze dobrane struktury mogą znacznie przyspieszyć działanie programu i zmniejszyć zużycie zasobów. Moim zdaniem, jeśli chcesz projektować efektywne algorytmy, musisz naprawdę dobrze rozumieć, jak różne struktury działają i umieć je dopasować do problemu, który chcesz rozwiązać.

Pytanie 10

Jakie elementy powinny być ujęte w dokumentacji programu?

A. Strategia marketingowa aplikacji
B. Opis funkcji, klas i zmiennych w kodzie
C. Zestawienie błędów zidentyfikowanych w trakcie testów
D. Szczegóły dotyczące konfiguracji serwera
Opis funkcji, klas i zmiennych w kodzie to kluczowy element dokumentacji programu. Tego rodzaju dokumentacja pozwala na lepsze zrozumienie struktury aplikacji, jej logiki biznesowej oraz wzajemnych zależności pomiędzy poszczególnymi komponentami. Dokumentacja techniczna obejmuje szczegółowe informacje na temat implementacji, interfejsów API, schematów baz danych oraz sposobów integracji z innymi systemami. Dzięki niej programiści mogą szybciej wdrażać się w projekt, a błędy i niejasności są minimalizowane. Kompleksowa dokumentacja zawiera także przykłady użycia poszczególnych funkcji, co dodatkowo ułatwia rozwój i rozbudowę aplikacji. W dobrze prowadzonym projekcie dokumentacja kodu jest na bieżąco aktualizowana, co zwiększa jego przejrzystość i wspiera proces refaktoryzacji.

Pytanie 11

Co to jest algorytm QuickSort?

A. Metoda kompresji danych bez strat
B. Algorytm wyszukiwania binarnego w posortowanej tablicy
C. Technika przeszukiwania grafu wszerz
D. Wydajny algorytm sortowania oparty na strategii 'dziel i zwyciężaj'
Algorytm QuickSort to jeden z najbardziej popularnych i efektywnych algorytmów sortowania, który opiera się na strategii 'dziel i zwyciężaj'. W praktyce działa w ten sposób, że wybiera element zwany pivotem (osią) i dzieli zbiór na dwie części: jeden z elementami mniejszymi od pivota, a drugi z elementami większymi. Następnie rekurencyjnie sortuje te podzbiory. QuickSort jest niezwykle szybki i wydajny, zwłaszcza dla dużych zbiorów danych, a jego średnia złożoność czasowa wynosi O(n log n). Używa się go w wielu aplikacjach, gdzie istotne jest szybkie przetwarzanie danych, takich jak sortowanie list w aplikacjach webowych czy organizacja danych w bazach. Warto jednak pamiętać, że w najgorszym przypadku, gdy pivot jest źle wybierany, złożoność może wynosić O(n^2), co występuje na przykład w przypadku już posortowanej tablicy. W kontekście praktycznym, dobre praktyki obejmują dobór odpowiedniej metody wyboru pivota, co może znacznie poprawić wydajność algorytmu.

Pytanie 12

Które z wymienionych stanowi przykład zagrożenia fizycznego w miejscu pracy?

A. Promieniowanie UV
B. Nieodpowiednie relacje w zespole
C. Brak ergonomicznych miejsc pracy
D. Obciążenie psychiczne
Zagrożenia fizyczne w środowisku pracy obejmują czynniki, które mogą prowadzić do obrażeń ciała lub problemów zdrowotnych. Przykładem takiego zagrożenia jest promieniowanie UV, które może powodować oparzenia skóry, uszkodzenia oczu oraz zwiększać ryzyko nowotworów skóry. Ochrona przed promieniowaniem UV jest kluczowa w zawodach wymagających pracy na zewnątrz lub przy urządzeniach emitujących intensywne światło UV. Stosowanie odpowiednich środków ochrony, takich jak okulary przeciwsłoneczne z filtrem UV, odzież ochronna i kremy z filtrem, jest niezbędne do minimalizacji ryzyka. Pracodawcy są zobowiązani do wdrażania procedur bezpieczeństwa i zapewniania odpowiednich środków ochrony pracowników narażonych na działanie promieniowania UV.

Pytanie 13

Jakie jest podstawowe zadanie wykorzystania frameworka Node.js w aplikacjach internetowych?

A. Budowanie aplikacji mobilnych
B. Weryfikacja API
C. Kreowanie graficznego interfejsu użytkownika
D. Zarządzanie aplikacjami serwerowymi i realizacja przetwarzania asynchronicznego
Node.js to w zasadzie takie środowisko, które pozwala na uruchamianie JavaScriptu na serwerze. Dzięki temu można budować różne aplikacje serwerowe i radzić sobie z asynchronicznym przetwarzaniem. Fajnie, że Node.js może obsługiwać wiele połączeń jednocześnie, co sprawia, że nadaje się do aplikacji, które mają dużo użytkowników, jak czaty czy różne API. Jest to dość wydajne rozwiązanie dzięki architekturze opartej na zdarzeniach, więc nie zajmuje za dużo zasobów. Co ciekawe, używając Node.js, można pisać kod zarówno na serwerze, jak i na kliencie, co jest naprawdę dużą oszczędnością czasu.

Pytanie 14

Który z wymienionych programów jest przeznaczony do zarządzania projektami przy pomocy tablic kanban?

A. Photoshop
B. Word
C. Trello
D. Jira
Jira to zaawansowane narzędzie do zarządzania projektami, ale jest bardziej skoncentrowane na metodykach Agile i Scrum, a nie wyłącznie na tablicach kanban. Photoshop to narzędzie do edycji grafiki i tworzenia projektów wizualnych, które nie ma funkcji zarządzania projektami. Word jest edytorem tekstu i służy do tworzenia dokumentów, ale nie jest używany jako narzędzie do zarządzania zadaniami i projektami w sposób, w jaki robi to Trello.

Pytanie 15

Jak zostanie przedstawiony poniższy kod XAML?

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

Pytanie 16

Jakie z wymienionych czynności może zagrażać cyfrowej tożsamości?

A. Tworzenie unikalnych oraz mocnych haseł
B. Klikanie w podejrzane linki w wiadomościach e-mail
C. Aktywacja uwierzytelniania dwuskładnikowego
D. Cykliczna zmiana haseł do kont
Klikanie w podejrzane linki w wiadomościach e-mail to jedno z najczęstszych źródeł infekcji i naruszenia cyfrowej tożsamości. Cyberprzestępcy często wykorzystują phishing, czyli technikę polegającą na wysyłaniu fałszywych wiadomości, które wyglądają na autentyczne. Kliknięcie w link może prowadzić do zainstalowania złośliwego oprogramowania lub przekierowania na stronę wyłudzającą dane logowania. Aby uniknąć tego zagrożenia, zaleca się sprawdzanie adresu nadawcy, unikanie otwierania załączników z nieznanych źródeł i korzystanie z filtrów antyphishingowych.

Pytanie 17

Z jakiej kolekcji powinno się korzystać, aby przechowywać informacje związane z elementem interfejsu użytkownika w taki sposób, aby ten element był informowany przez kolekcję o dodaniu, usunięciu lub zmianie jej zawartości?

A. Collection
B. KeyedCollection
C. ReadOnlyCollection
D. ObservableCollection
ObservableCollection to zdecydowanie najlepszy wybór w sytuacji, gdy zachodzi potrzeba powiadamiania elementów interfejsu użytkownika o zmianach w kolekcji. W praktyce, kiedy pracujesz np. z WPF, UWP albo MAUI, to ObservableCollection automatycznie informuje UI o dodaniu, usunięciu czy modyfikacji elementów. Wszystko dzięki temu, że implementuje interfejs INotifyCollectionChanged. Moim zdaniem praktyczne zastosowanie jest mega – gdy masz np. listę produktów, która wyświetla się użytkownikowi, to po prostu dokładasz lub usuwasz elementy z ObservableCollection i nie musisz ręcznie odświeżać widoku. Framework sam ogarnia powiązanie danych, bo kolekcja emituje zdarzenia CollectionChanged. Takie podejście jest spójne z zasadami MVVM i ogólnie promowane przez Microsoft w oficjalnych dokumentacjach. Często spotkać można rozwiązania, gdzie ktoś używa zwykłej List lub Collection, ale wtedy tracisz te automatyczne powiadomienia i pojawia się masa kodu-boilerplate. Szczerze mówiąc, nie widzę sensu kombinować z innymi kolekcjami, jeśli zależy Ci na dynamicznym, responsywnym UI. ObservableCollection to po prostu standard branżowy w .NET, jak dla mnie nie ma lepszej opcji na takie zastosowania.

Pytanie 18

Który z etapów umożliwia zwiększenie efektywności aplikacji przed jej wydaniem?

A. Tworzenie interfejsu graficznego
B. Dodawanie komentarzy do kodu
C. Testowanie jednostkowe
D. Optymalizacja 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 19

Początkowym celem środowisk IDE takich jak: lntellij IDEA, Eclipse, NetBeans jest programowanie w języku

A. C++
B. Java
C. C#
D. Python
Środowiska IDE, takie jak IntelliJ IDEA, Eclipse oraz NetBeans, zostały zaprojektowane z myślą o programowaniu w języku Java, który jest jednym z najpopularniejszych języków programowania na świecie. Te zintegrowane środowiska deweloperskie oferują szereg narzędzi i funkcji, które znacznie ułatwiają proces tworzenia aplikacji w Java. Przykładowo, IntelliJ IDEA, stworzony przez firmę JetBrains, dostarcza wsparcie dla automatycznego uzupełniania kodu, refaktoryzacji oraz analizy statycznej, co przyspiesza cykl rozwoju oprogramowania. Eclipse, będący otwartym oprogramowaniem, umożliwia rozszerzanie swoich funkcji poprzez wtyczki, co czyni go elastycznym narzędziem dla programistów. NetBeans, z kolei, zapewnia łatwe w użyciu interfejsy oraz wsparcie dla wielu technologii związanych z Java, takich jak JavaFX czy Java EE, co czyni go idealnym wyborem dla rozwoju aplikacji webowych i desktopowych. Zgodnie z przyjętymi standardami w branży, Java jest językiem obiektowym, który charakteryzuje się wysoką przenośnością oraz bezpieczeństwem, co czyni go atrakcyjnym wyborem dla wielu projektów komercyjnych oraz edukacyjnych.

Pytanie 20

Co to jest wzorzec projektowy Singleton?

A. Wzorzec zapewniający istnienie tylko jednej instancji klasy w całej aplikacji
B. Technika optymalizacji kodu poprzez minimalizację liczby obiektów
C. Wzorzec do zarządzania komunikacją między komponentami aplikacji
D. Metoda zabezpieczania aplikacji przed atakami typu SQL Injection
Wzorzec projektowy, który zapewnia istnienie tylko jednej instancji, jest często mylony z innymi technikami programistycznymi. Niektóre osoby mogą uważać, że wzorzec do zarządzania komunikacją między komponentami aplikacji, jak mediator, ma podobne właściwości, jednak jego głównym celem jest zupełnie inny. Mediator nie tworzy instancji, lecz koordynuje interakcje między już istniejącymi obiektami. Z kolei optymalizacja kodu przez minimalizację liczby obiektów, o której mowa w jednej z odpowiedzi, nie jest celem wzorca Singleton. Wzorzec ten może prowadzić do niepożądanych skutków, gdyż wprowadza globalny stan, co z kolei czyni testowanie jednostkowe trudniejszym. Utrzymywanie tylko jednej instancji nie jest tożsame z zarządzaniem zasobami, a raczej może powodować problemy z dostępnością tych zasobów, jeśli nie zostanie poprawnie zaprojektowane. Przykładowo, użytkownik może pomylić Singleton z metodą zabezpieczającą aplikację przed atakami typu SQL Injection, co jest zupełnie odmiennym zagadnieniem związanym z bezpieczeństwem danych. Zrozumienie różnicy między tymi wzorcami i technikami jest kluczowe dla skutecznego projektowania oprogramowania.

Pytanie 21

Narzędzie przeznaczone do rozwijania aplikacji w systemie WPf (ang. Windows Presentation Foundation) to

A. XamarinStudio
B. Visual Studio
C. NetBeans
D. PyCharm
Visual Studio to narzędzie, które według mnie jest praktycznie niezbędne do profesjonalnej pracy z WPF (Windows Presentation Foundation). WPF to technologia Microsoftu do budowania nowoczesnych, graficznych interfejsów użytkownika na platformie Windows. Visual Studio posiada wbudowane wsparcie dla projektów WPF – od kreatora nowych aplikacji, przez podpowiedzi składni XAML, aż po graficzny edytor interfejsów, tzw. designer. Na co dzień, gdy projektuję UI w WPF, doceniam funkcje takie jak live preview, debugger XAML czy możliwość natychmiastowego podglądu zmian. Z Visual Studio korzystają praktycznie wszyscy programiści .NET na świecie, bo daje ono dostęp nie tylko do edycji kodu, ale też do narzędzi takich jak NuGet, integracja z systemami kontroli wersji (np. Git), testowanie jednostkowe czy automatyczne refaktoryzacje. Warto wiedzieć, że Microsoft stale rozwija Visual Studio pod kątem WPF, dbając nie tylko o nowości w językach C# i VB.NET, ale też o wygodę pracy z XAML-em oraz wsparcie dla wzorców projektowych, takich jak MVVM. Z praktycznego punktu widzenia, jeśli chcesz tworzyć prawdziwie profesjonalne aplikacje WPF, to Visual Studio jest – moim zdaniem – bezkonkurencyjne. Często nawet początkujący szybko zauważają, jak bardzo przyspiesza ono codzienną pracę i rozwiązywanie problemów typowych dla tej technologii.

Pytanie 22

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

W Android Studio:
<TextView android:text="@{viewmodel.userName}" />
W XAML:
<Label Text="{Binding Source={x:Reference slider2}, Path=Value}" />
A. zarządzanie mechanizmem obietnic (promises) lub obserwatora (observable) w programowaniu asynchronicznym
B. wiązanie oraz eksportowanie plików z różnych modułów aplikacji
C. przetwarzanie zdarzeń kontrolek interfejsu użytkownika przez wywoływanie odpowiednich funkcji
D. wiązać właściwości (property) elementu interfejsu użytkownika z danymi lub właściwością innego obiektu
Wiązanie (binding) w kontekście interfejsów użytkownika, takich jak Android Studio czy XAML, to bardzo kluczowy mechanizm, który pozwala na automatyczne połączenie danych z logiki aplikacji (np. zmiennych, modeli ViewModel) z konkretnymi właściwościami kontrolek na ekranie. Dzięki temu nie trzeba ręcznie programować każdej aktualizacji – wszystko dzieje się „w tle”. Na przykład, jeśli użytkownik zmieni wartość jakiejś kontrolki, takiej jak suwak (Slider), odpowiednia właściwość w klasie ViewModel również się zaktualizuje i na odwrót. To podejście jest zgodne z architekturą MVVM (Model-View-ViewModel), która jest bardzo popularna w aplikacjach mobilnych i desktopowych. Moim zdaniem to ogromna oszczędność czasu i po prostu mniej błędów w kodzie, bo nie trzeba pisać setek linii kodu łączącego UI z danymi. W praktyce binding często umożliwia także walidację danych na bieżąco, reakcje na zmiany oraz poprawia czytelność kodu. Bez tego, nawet proste aplikacje robią się niepotrzebnie skomplikowane i trudne do utrzymania. Przykłady użycia – to chociażby powiązanie tekstu wyświetlanego w TextView z polem w ViewModel, czy automatyczna aktualizacja etykiety, gdy zmienia się wartość suwaka. To jedna z podstawowych rzeczy, które wyróżniają nowoczesne frameworki UI – i szczerze, trudno bez tego wyobrazić sobie dzisiejsze tworzenie aplikacji.

Pytanie 23

Jaką nazwę kontrolki powinno się umieścić w początkowej linii kodu, w miejscu <???, aby została ona wyświetlona w podany sposób?

Ilustracja do pytania
A. Switch
B. SeekBar
C. Spinner
D. RatinoBar
Switch to kontrolka używana w Androidzie do stworzenia elementu interfejsu użytkownika, który pozwala użytkownikowi przełączać się między dwoma stanami. Domyślnie stany te są identyfikowane jako włączone i wyłączone, co jest szczególnie przydatne w przypadku funkcji wymagających prostego wyboru binarnego, jak na przykład włączanie lub wyłączanie ustawień. Kod XML użyty w pytaniu zawiera atrybuty android:textOff i android:textOn, które są typowe dla klasy Switch i pozwalają zdefiniować tekst, jaki ma być wyświetlany w stanie wyłączonym i włączonym. W praktyce Switch jest często stosowany w aplikacjach mobilnych do kontroli ustawień użytkownika, co pozwala na łatwą i intuicyjną obsługę. Dobrymi praktykami jest używanie Switch w kontekście jednoznacznego wyboru, aby nie wprowadzać użytkownika w błąd. Warto również zadbać o dostępność i odpowiednie etykietowanie kontrolki, co zapewnia jej zrozumiałość dla wszystkich użytkowników.

Pytanie 24

Który z wymienionych wzorców projektowych jest najbardziej odpowiedni do uproszczenia interfejsu złożonego systemu?

A. Metoda szablonowa (Template method)
B. Kompozyt (Composite)
C. Singleton (Singleton)
D. Fasada (Facade)
Wzorzec Kompozyt (Composite) umożliwia traktowanie pojedynczych obiektów i ich grup w jednakowy sposób, co ułatwia zarządzanie hierarchicznymi strukturami. Metoda szablonowa (Template Method) definiuje szkielet algorytmu w klasie bazowej, pozwalając podklasom na dostosowanie poszczególnych kroków. Singleton to wzorzec zapewniający istnienie tylko jednej instancji klasy, co jest użyteczne w zarządzaniu zasobami systemowymi, ale nie służy do upraszczania interfejsu do złożonego systemu.

Pytanie 25

Definicja konstruktora dla zaprezentowanej klasy w języku C++ może być sformułowana jak poniżej:

class Owoc
{
    public:
        double waga;
        string nazwa;
        Owoc(double waga, string nazwa);
};

Deklaracja 1:
Owoc::Owoc(double waga, string nazwa) {
    this -> waga = waga;
    this -> nazwa = nazwa;
}

Deklaracja 2:
Construct::Owoc(double waga, string nazwa) {
    this -> waga = waga;
    this -> nazwa = nazwa;
}

Deklaracja 3:
Construct::Owoc(double waga, string nazwa) {
    this.waga = waga;
    this.nazwa = nazwa;
}

Deklaracja 4:
Owoc::Owoc(double waga, string nazwa) {
    this.waga = waga;
    this.nazwa = nazwa;
}
A. Deklaracji 1
B. Deklaracji 3
C. Deklaracji 2
D. Deklaracji 4
Deklaracja 1 pokazuje dokładnie taką definicję konstruktora, jaka powinna być użyta w języku C++. Nazwa klasy i konstruktora musi być identyczna, a składnia Owoc::Owoc(double waga, string nazwa) jest kanoniczna w C++ dla implementacji konstruktora poza klasą. Użycie this->waga = waga jasno wskazuje, że chodzi o przypisanie wartości z parametru do pola składowego klasy. W praktyce to jest bardzo często spotykany wzór przy pisaniu konstruktorów dla klasy, która ma kilka pól – tak można odróżnić parametry funkcji od pól klasy. Moim zdaniem warto zawsze zwracać uwagę na taki zapis, bo to pomaga unikać błędów, zwłaszcza przy większych projektach, gdzie pól może być sporo i łatwo się pomylić. W dodatku stosowanie składni this-> od razu sygnalizuje, że działamy na polach konkretnej instancji obiektu. Takie podejście jest zgodne ze wszystkimi standardami C++ i bez problemu skompiluje się w każdym środowisku. W praktyce często spotykam się z tym, że ktoś próbuje stosować inne notacje czy podpatrzone w innych językach konstrukcje, ale w C++ to właśnie taki zapis jest poprawny i klarowny dla każdego programisty. Dla czytelności kodu i łatwości utrzymania projektu, zdecydowanie polecam trzymać się tej formy. Dobrze jest też pamiętać, że w nowszych wersjach C++ można też użyć listy inicjalizacyjnej, ale tutaj przedstawiony sposób jest w pełni poprawny i zrozumiały.

Pytanie 26

Co to jest JWT (JSON Web Token)?

A. Kompaktowy format do bezpiecznego przekazywania informacji między stronami jako obiekt JSON
B. Format zapisu danych w bazach NoSQL
C. Protokół do przesyłania danych JSON przez sieć
D. Biblioteka JavaScript do manipulacji danymi JSON
JWT (JSON Web Token) to kompaktowy format, który umożliwia bezpieczne przesyłanie informacji pomiędzy różnymi stronami. Główną zaletą tokenów JWT jest ich struktura, która składa się z trzech części: nagłówka, ładunku (payload) oraz podpisu. Nagłówek zazwyczaj wskazuje typ tokena oraz algorytm użyty do podpisania, co pozwala na szybką weryfikację integralności danych. Ładunek zawiera informacje, często nazywane roszczeniami (claims), które mogą dotyczyć użytkownika lub sesji, a podpis zapewnia, że token nie został zmodyfikowany w trakcie przesyłania. W praktyce JWT jest często wykorzystywany w systemach autoryzacyjnych, gdzie po pomyślnym zalogowaniu, użytkownik otrzymuje token, który następnie może być używany do autoryzacji dostępu do różnych zasobów. Standard JWT definiuje sposób kodowania i dekodowania tokenów, a jego stosowanie pozwala na zwiększenie bezpieczeństwa aplikacji webowych oraz mobilnych poprzez ograniczenie konieczności przechowywania sesji na serwerze, co jest zgodne z najlepszymi praktykami w dziedzinie inżynierii oprogramowania.

Pytanie 27

Jaką instrukcję należy wykorzystać do poprawnej deklaracji zmiennej typu string w C++?

A. int name = "Jan"
B. bool name = "Jan"
C. string name = "Jan"
D. float name = "Jan"
Ta deklaracja 'string name = "Jan"' to naprawdę dobry sposób na zdefiniowanie zmiennej łańcuchowej w C++. Wiesz, 'string' to typ danych, 'name' to nazwa tej zmiennej, a 'Jan' to wartość, która jest jej przypisana. Typ 'string' jest częścią biblioteki <string> i daje nam wiele możliwości, gdy pracujemy z tekstem. Możemy łączyć, porównywać i modyfikować różne łańcuchy znaków bez większego problemu. To jest mega ważne w aplikacjach, które mają do czynienia z danymi tekstowymi, interfejsami użytkownika czy analizą danych, które wprowadzamy.

Pytanie 28

Co oznacza akronim IDE w kontekście programowania?

A. Interaktywny Edytor Debugowania
B. Interaktywny Silnik Programistyczny
C. Zintegrowane Środowisko Debugowania
D. Integrated Development Environment
IDE, czyli Zintegrowane Środowisko Programistyczne, to naprawdę przydatne narzędzie. Zajmuje się nie tylko edytowaniem kodu, ale łączy w sobie kompilator, debugger i wiele innych rzeczy, które pomagają w tworzeniu oprogramowania. Dzięki IDE można szybciej pisać programy i lepiej ogarniać projekty. A najpopularniejsze z nich, jak Visual Studio, IntelliJ IDEA czy Eclipse, wspierają różne języki programowania, więc są bardzo uniwersalne. Moim zdaniem, korzystanie z IDE to prawie obowiązek dla każdego programisty!

Pytanie 29

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

A. Konstruktor powinien zwracać jakąś wartość
B. Konstruktor jest uruchamiany jedynie przez destruktor
C. Konstruktor można wywołać bez konieczności tworzenia obiektu
D. Konstruktor zawsze nosi tę samą nazwę co klasa i nie zwraca wartości
Konstruktor nie zwraca wartości, w przeciwieństwie do zwykłych metod klasy, które mogą zwracać typy danych (`int`, `float`, `string`). Konstruktor nie może być wywoływany bez tworzenia obiektu – jest to mechanizm związany wyłącznie z procesem inicjalizacji obiektu. Destruktor, a nie konstruktor, jest wywoływany po zakończeniu życia obiektu w celu zwolnienia zasobów. Konstruktor jest pierwszą metodą, która działa podczas tworzenia obiektu, co odróżnia go od destruktora, który działa na końcu życia obiektu.

Pytanie 30

Jaki tekst zostanie wyświetlony po uruchomieniu jednego z poniższych fragmentów kodu?
Kod w React:

<h2>{2+2}</h2>
Kod w Angular:
<h2>{{2+2}}</h2>
A. {4}
B. {2+2}
C. {{2+2}}
D. 4
To pytanie jest świetną okazją, żeby zobaczyć, jak działają wyrażenia w szablonach Reacta i Angulara. Odpowiedź „4” jest prawidłowa, bo zarówno w React, jak i w Angularze, zawarte w nawiasach klamrowych wyrażenie matematyczne 2+2 jest oceniane przez silnik JavaScript podczas renderowania komponentu. Nie jest to zwykły tekst, tylko dynamiczne wyliczenie. Dzięki temu React (w JSX) oraz Angular (w interpolacji {{}}) najpierw obliczają sumę, a potem podstawiają wynik w miejsce wyrażenia – czyli na ekranie pojawia się zwykły tekst „4”. Moim zdaniem to jedna z największych zalet tych frameworków, bo pozwala na bardzo elastyczne budowanie UI, gdzie dynamiczne dane mogą być wstawiane praktycznie wszędzie, bez potrzeby ręcznego tworzenia dodatkowych zmiennych czy długich instrukcji warunkowych. W praktyce często stosuje się takie podejście chociażby do wyświetlania wyników obliczeń, liczników, czy dynamicznych podsumowań. Z mojego doświadczenia, warto pamiętać, że każde wyrażenie w takich miejscach powinno być możliwie proste — złożone logiki lepiej wynieść do funkcji, bo wtedy szablon pozostaje czytelny. Warto też mieć świadomość, że React i Angular automatycznie konwertują wynik na tekst, więc nie trzeba się martwić o jawne rzutowanie. To podejście jest zgodne z dobrymi praktykami branżowymi – prosty, czytelny kod to podstawa w nowoczesnych aplikacjach webowych.

Pytanie 31

Co zostanie wyświetlone w konsoli po wykonaniu poniższego kodu?

let arr = [1, 2, 3, 4, 5];
let result = arr.filter(num => num % 2 === 0);
console.log(result);
A. [1, 3, 5]
B. [1, 2, 3, 4, 5]
C. 2,4
D. [2, 4]
Wybór odpowiedzi [1, 3, 5] lub [2, 4] oraz 2,4 odzwierciedla niezrozumienie działania metody filter w JavaScript. Odpowiedź [1] sugeruje, że program wyświetli wszystkie parzyste liczby, lecz nie uwzględnia, że filter tworzy nową tablicę tylko z liczb spełniających określony warunek, a w tym przypadku tylko liczby parzyste. Ponadto, [3] wskazuje na brak zastosowania filtru, a więc pokazuje wszystkie elementy tablicy, co również jest błędne. Z kolei odpowiedź 2,4 nie jest nawet poprawnym formatem dla JavaScript, gdzie wyniki w konsoli są prezentowane w postaci tablicy z elementami oddzielonymi przecinkami. Takie podejście, aby zapisać wynik w konsoli, a nie odwoływać się do jego struktury, może prowadzić do błędnych interpretacji. Należy pamiętać, że w JavaScript, kluczowym elementem do zrozumienia jest różnica między metodą filter a innymi metodami tablic, takimi jak map czy forEach. Metoda filter zwraca nową tablicę, podczas gdy inne mogą działać na oryginalnych danych bez ich zmiany. Dlatego ważne jest, aby nie tylko znać technikę, ale i jej zastosowanie w kontekście rozwiązania problemu, co jest niezbędne w pracy programisty.

Pytanie 32

Który z wymienionych frameworków jest charakterystyczny dla aplikacji komputerowych pisanych w C#?

A. Spring
B. Qt
C. React
D. WPF (Windows Presentation Foundation)
WPF (Windows Presentation Foundation) to framework firmy Microsoft, który jest powszechnie wykorzystywany do tworzenia aplikacji desktopowych w języku C#. WPF pozwala na projektowanie zaawansowanych interfejsów użytkownika (UI) z wykorzystaniem XAML (Extensible Application Markup Language), co umożliwia oddzielenie logiki aplikacji od warstwy prezentacyjnej. WPF wspiera grafikę wektorową, animacje oraz różne efekty wizualne, co czyni go idealnym narzędziem do budowy nowoczesnych, estetycznych aplikacji dla systemu Windows. Integracja z .NET i Visual Studio umożliwia szybkie tworzenie aplikacji oraz korzystanie z bogatych bibliotek i gotowych komponentów UI. WPF jest szczególnie ceniony za elastyczność, obsługę danych i możliwość tworzenia aplikacji responsywnych.

Pytanie 33

Jaką rolę pełni element statyczny w klasie?

A. Zachowuje wspólną wartość dla wszystkich instancji tej klasy
B. Ogranicza dostęp do metod publicznych w klasie
C. Automatycznie likwiduje obiekty klasy po zakończeniu działania programu
D. Pozwala na dynamiczne dodawanie nowych metod
Składnik statyczny klasy przechowuje wartości współdzielone przez wszystkie obiekty tej klasy. Jest to jedno z najbardziej efektywnych narzędzi w programowaniu obiektowym, pozwalające na ograniczenie zużycia pamięci oraz zapewnienie spójności danych. Główna rola składnika statycznego polega na utrzymaniu jednej kopii zmiennej lub metody, która jest dostępna niezależnie od liczby instancji klasy. To oznacza, że zmiana wartości składowej statycznej jest natychmiast widoczna dla wszystkich obiektów klasy. Przykładem jest licznik instancji klasy lub konfiguracja globalna aplikacji, gdzie statyczność pozwala na scentralizowanie danych i ich jednolite zarządzanie.

Pytanie 34

Które z poniższych narzędzi służy do analizy wydajności stron internetowych?

A. Docker
B. Postman
C. Lighthouse
D. Webpack
Postman to narzędzie, które służy przede wszystkim do testowania API. Jego główna funkcjonalność polega na umożliwieniu użytkownikom wysyłania zapytań do serwerów oraz analizy odpowiedzi, co jest niezbędne w procesie rozwijania aplikacji webowych. Jednakże, Postman nie ma za zadanie oceny wydajności stron internetowych, ponieważ koncentruje się na interakcjach z API, a nie na aspekcie wydajności samej strony. Docker jest platformą do konteneryzacji, która pozwala deweloperom na łatwe zarządzanie aplikacjami w różnych środowiskach. Chociaż Docker może mieć wpływ na wydajność aplikacji poprzez ułatwienie zarządzania zasobami, nie jest narzędziem dedykowanym do analizy wydajności stron internetowych. Webpack to narzędzie służące do bundlingu zasobów JavaScript, które skupia się na optymalizacji i kompresji plików. Jego zadaniem jest usprawnienie dostarczania skryptów do przeglądarek, jednak nie jest to narzędzie, które ocenia wydajność strony jako całości. Błędem jest zatem mylenie funkcji, jakie pełnią te narzędzia. Zamiast skupić się na testowaniu wydajności, można skupić się na testowaniu API czy optymalizacji zasobów, co nie odnosi się bezpośrednio do analizy całkowitej wydajności strony internetowej. Dlatego ważne jest zrozumienie, jakie narzędzia służą do jakich celów, aby skutecznie poprawiać jakość aplikacji internetowych.

Pytanie 35

Który z wymienionych objawów może sugerować nagłe zagrożenie dla zdrowia?

A. Zwiększona efektywność pracy
B. Intensywne pocenie się w gorącym otoczeniu
C. Obniżony nastrój w ciągu dnia
D. Ostry ból w klatce piersiowej
Ostry ból w klatce piersiowej to jeden z najbardziej alarmujących objawów wskazujących na nagłe zagrożenie zdrowotne, takie jak zawał serca lub zatorowość płucna. Tego rodzaju ból jest często opisywany jako gniotący, ściskający lub rozlewający się na inne części ciała, takie jak ramię, szyja czy żuchwa. W takich przypadkach kluczowe jest szybkie wezwanie pomocy medycznej, ponieważ każda minuta opóźnienia może zwiększyć ryzyko powikłań lub śmierci. Edukacja w zakresie rozpoznawania tego objawu może uratować życie, dlatego tak ważne jest rozróżnianie go od innych mniej groźnych objawów.

Pytanie 36

Jaką rolę odgrywa destruktor w definicji klasy?

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

Pytanie 37

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

A. Algorytm generowania liczb losowych
B. Algorytm wyszukiwania binarnego
C. Algorytm sortowania bąbelkowego
D. Algorytm mapowania kluczy w tablicach asocjacyjnych
Sortowanie bąbelkowe to algorytm iteracyjny i nie ma naturalnej wersji rekurencyjnej, ponieważ jego działanie opiera się na powtarzających się pętlach. Algorytm mapowania kluczy w tablicach asocjacyjnych nie korzysta z rekurencji – jest to proces przypisywania wartości do odpowiednich kluczy, który realizowany jest w sposób iteracyjny. Algorytm generowania liczb losowych nie wymaga rekurencji ani iteracji – jest to operacja oparta na wywołaniu odpowiednich funkcji w zależności od użytej biblioteki i języka programowania.

Pytanie 38

Która z wymienionych właściwości odnosi się do klasy pochodnej?

A. Nie może być zastosowana w strukturze dziedziczenia
B. Dziedziczy atrybuty i metody z klasy bazowej
C. Jest automatycznie usuwana po zakończeniu działania programu
D. Nie ma możliwości dodawania nowych metod
Cechą klasy pochodnej jest dziedziczenie pól i metod z klasy bazowej, co oznacza, że klasa pochodna automatycznie uzyskuje dostęp do wszystkich publicznych i chronionych składowych klasy nadrzędnej. Dzięki temu programista może rozwijać i modyfikować funkcjonalność istniejących klas, tworząc bardziej wyspecjalizowane obiekty. Dziedziczenie to kluczowy mechanizm umożliwiający wielokrotne użycie kodu, co prowadzi do zmniejszenia duplikacji i zwiększenia efektywności w zarządzaniu projektem. Klasa pochodna może również nadpisywać metody klasy bazowej, dostosowując ich działanie do swoich specyficznych potrzeb.

Pytanie 39

Zaprezentowany symbol odnosi się do

Ilustracja do pytania
A. Creative Commons
B. domeny publicznej
C. praw autorskich
D. prawa cytatu
Ten symbol to międzynarodowe oznaczenie domeny publicznej – często nazywany jest też symbolem Public Domain. Moim zdaniem to bardzo przydatna rzecz, bo jednoznacznie komunikuje, że utwór nie jest chroniony prawem autorskim, więc można go swobodnie wykorzystywać bez pytania kogokolwiek o zgodę. To szczególnie ważne, gdy pracujesz nad projektami komercyjnymi albo edukacyjnymi i musisz mieć pewność, że nie naruszasz czyichś praw. W praktyce spotkasz to oznaczenie na stronach z grafikami, muzyką czy tekstami, np. na Wikimedia Commons albo w niektórych bazach zdjęć stockowych – wtedy od razu wiesz, że możesz pobierać, edytować czy publikować materiał na własnych zasadach. Kluczowe jest jednak, żeby nie mylić tego symbolu z licencjami Creative Commons – tam nadal obowiązują konkretne warunki. W branży IT oraz przy pracy twórczej rozpoznawanie takich oznaczeń jest wręcz podstawą dobrych praktyk, bo znacząco minimalizuje ryzyko prawne. Z mojego doświadczenia wynika, że wielu początkujących myli domenę publiczną z wolnymi licencjami – a to nie to samo. Oznaczenie Public Domain jasno pokazuje: nie ma ograniczeń, korzystaj śmiało i nie musisz podawać autora, choć czasami jest to mile widziane z punktu widzenia etyki.

Pytanie 40

Zajmując się pracą w zespole oraz dbając o jego efektywne funkcjonowanie, nie powinniśmy

A. skupiać się jedynie na własnych korzyściach
B. sumiennie i w ustalonym terminie realizować swoje zadania
C. przyjmować odpowiedzialności za swoje decyzje
D. wspierać się nawzajem
Dokładnie o to chodzi – skupianie się tylko na własnych korzyściach prawie zawsze działa na szkodę zespołu. W praktyce, gdy ktoś patrzy wyłącznie na siebie, najczęściej zaniedbuje współpracę, co prowadzi do napięć i spadku efektywności grupy. W zespole liczy się wspólny cel, a nie indywidualne interesy, bo to właśnie dzięki wzajemnemu wsparciu i otwartej komunikacji można osiągnąć lepsze wyniki. Z mojego doświadczenia wynika, że projekty, w których członkowie współpracowali i dzielili się odpowiedzialnością, szły sprawniej i bez zbędnych spięć. Profesjonalne standardy, np. metodyki Scrum czy Agile, akcentują wartość pracy zespołowej i transparentności – jeśli każdy ciągnie w swoją stronę, cały model współpracy się sypie. Warto pamiętać, że nawet najlepszy specjalista sam nie pociągnie projektu, jeśli nie będzie działał fair wobec innych. Najlepiej się sprawdza takie podejście, gdzie ludzie podchodzą do pracy z otwartością, potrafią poprosić o pomoc i wspólnie świętują sukcesy, a nie tylko skupiają się na własnych liczbach czy bonusach. To naprawdę widać w praktyce – zespoły, gdzie nie liczy się tylko własny interes, mają zwykle znacznie lepsze efekty i atmosferę pracy.