Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.04 - Projektowanie, programowanie i testowanie aplikacji
  • Data rozpoczęcia: 7 maja 2025 13:11
  • Data zakończenia: 7 maja 2025 13:38

Egzamin zdany!

Wynik: 31/40 punktów (77,5%)

Wymagane minimum: 20 punktów (50%)

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

Który framework jest powszechnie wykorzystywany do tworzenia aplikacji internetowych w języku Python?

A. React.js
B. Django
C. ASP.NET Core
D. Angular
Django to framework stworzony specjalnie do budowy aplikacji webowych w języku Python. Jest jednym z najbardziej popularnych i zaawansowanych frameworków typu full-stack, który oferuje szeroki wachlarz narzędzi umożliwiających szybkie i efektywne tworzenie aplikacji internetowych. Django pozwala na tworzenie aplikacji zgodnych z zasadą DRY (Don't Repeat Yourself), co oznacza minimalizację powtarzalnego kodu. Posiada wbudowany panel administracyjny, system ORM (Object-Relational Mapping) oraz zabezpieczenia przed atakami CSRF i XSS. Dzięki Django programiści mogą skupić się na rozwijaniu logiki biznesowej, a nie na konfiguracji podstawowych funkcji aplikacji, co znacznie skraca czas wdrożenia gotowego produktu.

Pytanie 2

Aby zdefiniować zmienną, która będzie działała jako licznik instancji danej klasy, należy wprowadzenie takiego zmiennej poprzedzić słowem kluczowym

A. operator
B. register
C. static
D. virtual
Słowo kluczowe 'static' w językach takich jak Java, C++ czy C# oznacza, że dane pole należy do klasy, a nie do konkretnego obiektu. Dzięki temu pole 'static' jest współdzielone przez wszystkie instancje klasy i może być wykorzystywane do śledzenia liczby obiektów utworzonych na podstawie tej klasy. Static to nieodzowny element przy implementacji liczników instancji.

Pytanie 3

Jakie informacje przedstawia diagram Gantta?

A. Model przepływu danych
B. Plan działań w projekcie
C. Relacje między różnymi projektami
D. Strukturę plików w projekcie
Diagram Gantta to narzędzie używane do wizualizacji harmonogramu zadań w projekcie. Przedstawia on zadania w układzie osi czasu, co pozwala na łatwe śledzenie terminów, zależności i etapów realizacji projektu. Diagram Gantta jest niezwykle przydatny w dużych projektach, ponieważ ułatwia planowanie zasobów i umożliwia identyfikowanie potencjalnych opóźnień. Dzięki czytelnej formie, managerowie mogą szybko ocenić, które zadania są w trakcie realizacji, a które są opóźnione. Diagramy Gantta są szeroko stosowane w zarządzaniu projektami budowlanymi, IT oraz w planowaniu kampanii marketingowych.

Pytanie 4

Jakie jest zastosowanie języka XAML przy tworzeniu aplikacji desktopowych?

A. Do projektowania graficznego interfejsu użytkownika
B. Do obsługi zdarzeń klawiatury
C. Do zarządzania bazami danych
D. Do optymalizacji działania aplikacji
XAML (Extensible Application Markup Language) to język znaczników wykorzystywany w technologii WPF (Windows Presentation Foundation) oraz UWP (Universal Windows Platform) do projektowania graficznego interfejsu użytkownika (GUI). XAML pozwala na definiowanie układów, przycisków, etykiet oraz innych elementów interaktywnych w aplikacjach desktopowych. Dzięki XAML, projektowanie interfejsu jest intuicyjne, a kod interfejsu jest oddzielony od logiki aplikacji, co sprzyja przejrzystości projektu. XAML wspiera animacje, style i szablony, co umożliwia budowę nowoczesnych, dynamicznych aplikacji. Jego elastyczność i możliwość współpracy z C# sprawiają, że XAML jest niezastąpiony w środowisku Windows.

Pytanie 5

Jakie funkcje realizuje polecenie "git clone"?

A. Usuwa zdalne repozytorium
B. Rejestruje zmiany w historii repozytorium
C. Łączy dwa branche w repozytorium
D. Tworzy lokalną kopię już istniejącego repozytorium
Polecenie 'git clone' tworzy kopię lokalną istniejącego repozytorium, co pozwala programistom na szybkie rozpoczęcie pracy z projektem. Proces ten pobiera całą historię commitów oraz wszystkie gałęzie repozytorium, dzięki czemu użytkownik posiada pełną wersję projektu na swoim komputerze. Jest to podstawowe polecenie podczas rozpoczynania pracy nad nowym projektem, który znajduje się na platformach takich jak GitHub, GitLab czy Bitbucket. 'git clone' umożliwia również sklonowanie repozytoriów prywatnych, pod warunkiem posiadania odpowiednich uprawnień dostępu.

Pytanie 6

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?

Ilustracja do pytania
A. MojaTablica tab2 = new MojaTablica()
B. int tab2[] = new MojaTablica()
C. MojaTablica tab2 = MOjaTablica()
D. int tab2 = new MojaTablica()
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 7

Które z poniższych narzędzi jest używane do zarządzania wersjami kodu?

A. Kubernetes
B. Docker
C. Jenkins
D. Git
Git jest narzędziem służącym do zarządzania wersjami kodu, które zyskało ogromną popularność wśród programistów na całym świecie. Jego podstawową funkcją jest umożliwienie śledzenia zmian w kodzie źródłowym, co jest niezbędne w procesie tworzenia oprogramowania. Dzięki Gitowi możemy w łatwy sposób przechowywać historię zmian, co pozwala na cofanie się do wcześniejszych wersji projektu, a także na pracę zespołową, gdzie wielu programistów może jednocześnie pracować nad różnymi częściami tego samego projektu. Git wspiera również gałęzie (ang. branches), które umożliwiają równoległe rozwijanie nowych funkcji bez zakłócania głównej linii rozwoju. Jest to kluczowe w środowiskach, gdzie rozwój i wydanie nowych funkcji musi być dobrze zorganizowane. Narzędzie to jest nie tylko darmowe, ale również open-source, co oznacza, że każdy może przyczynić się do jego rozwoju. Git jest standardem w branży IT, a jego znajomość jest często wymagana przez pracodawców. Dzięki swojej elastyczności i wszechstronności Git jest stosowany w projektach open-source, komercyjnych i edukacyjnych.

Pytanie 8

Jaką jednostkę zaleca się stosować przy projektowaniu interfejsu aplikacji?

A. mm
B. pt
C. dp
D. px
Jednostką zalecaną przy tworzeniu układów interfejsów w aplikacjach mobilnych jest dp (density-independent pixels). Pozwala to na zachowanie proporcji elementów interfejsu niezależnie od rozdzielczości urządzenia.

Pytanie 9

Które z poniższych twierdzeń najlepiej charakteryzuje metodę wirtualną?

A. Metoda, która jest zawsze stosowana w konstruktorach danej klasy
B. Metoda, która działa wyłącznie dla statycznych pól danej klasy
C. Metoda, która może być przesłonięta w klasie dziedziczącej
D. Metoda, która może być wywoływana tylko przez klasę nadrzędną
Metoda, która może być wywoływana tylko przez klasę bazową to raczej metoda prywatna lub chroniona, a nie wirtualna. Metody statyczne są związane z klasą, a nie z konkretnymi obiektami, więc nie można ich tak po prostu nadpisać w klasie pochodnej. A tak w ogóle, metody w konstruktorach zazwyczaj nie są wirtualne, bo wywołanie metod wirtualnych w konstruktorze może prowadzić do dziwnych rzeczy – w konstruktorze klasy bazowej składowe klasy pochodnej jeszcze nie są gotowe.

Pytanie 10

Jakie zdarzenie jest wywoływane, gdy kliknięta zostaje myszą nieaktywna kontrolka lub okno?

A. validating
B. focus
C. blur
D. keyup
Zdarzenie 'focus' jest generowane, gdy nieaktywne okno lub kontrolka zostanie kliknięta i przejdzie do stanu aktywnego. Oznacza to, że element uzyskuje fokus, co pozwala na interakcję z użytkownikiem, np. wpisywanie danych do pola tekstowego. Jest to powszechne w formularzach i aplikacjach, gdzie ważne jest śledzenie aktywnego komponentu.

Pytanie 11

Przyjmując, że opisana hierarchia klas właściwie odzwierciedla figury geometryczne i każda figura ma zdefiniowaną metodę do obliczania pola, to w której klasie można znaleźć deklarację metody liczPole()?

Ilustracja do pytania
A. trójkąt
B. trapez
C. czworokąt
D. figura
Klasa 'trapez' i 'czworokąt' mogą dziedziczyć metodę liczPole(), ale nie definiują jej jako metody bazowej. Klasa 'trójkąt' to bardziej szczegółowa implementacja, która może mieć własną wersję metody liczPole(), ale nie jest to metoda bazowa dla wszystkich figur.

Pytanie 12

W jakiej sytuacji wykorzystanie stosu będzie korzystniejsze niż lista podczas projektowania zestawu danych?

A. Gdy chcemy usunąć element z końca
B. Gdy dane muszą być uporządkowane
C. Gdy ważne jest szybkie znajdowanie elementów
D. Gdy kolejność przetwarzania danych jest odwrócona (LIFO)
Lista umożliwia liniowy dostęp do elementów i pozwala na dodawanie/usuwanie elementów w dowolnym miejscu, ale nie działa na zasadzie LIFO – dostęp do ostatniego elementu nie jest tak szybki jak w stosie. Kolejka działa zgodnie z zasadą FIFO (First In First Out), co oznacza, że elementy są przetwarzane w kolejności ich dodania, co jest odwrotnością stosu. Tablica dwuwymiarowa to struktura służąca do przechowywania danych w formie macierzy, umożliwiająca indeksowany dostęp, ale nie wspiera bezpośrednio operacji LIFO ani FIFO.

Pytanie 13

Który wzorzec projektowy jest najlepszy do zarządzania tworzeniem obiektów?

A. Adapter
B. Observer
C. Decorator
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 14

W programowaniu obiektowym odpowiednikami zmiennych oraz funkcji w programowaniu strukturalnym są

A. hermetyzacja oraz dziedziczenie
B. metody statyczne i abstrakcyjne
C. pola i metody
D. pola i kwalifikatory dostępu
Odpowiednikami zmiennych i funkcji w programowaniu obiektowym są pola i metody. Pola przechowują dane (stan obiektu), a metody implementują logikę, pozwalając na manipulowanie tymi danymi i realizację zachowań klasy.

Pytanie 15

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

const promise = new Promise((resolve, reject) => { setTimeout(() => { resolve('success'); }, 1000); }); promise .then(res => { console.log(res); return 'first then'; }) .then(res => { console.log(res); });

A. first then
B. first then, success
C. success, first then
D. success
Podany kod JavaScript korzysta z obietnic (Promises), co jest nowoczesnym podejściem do zarządzania asynchronicznością w JavaScript. W momencie, gdy tworzymy nową obietnicę, wykorzystujemy funkcję `setTimeout`, która po 1 sekundzie wywołuje metodę `resolve`, przekazując tekst 'success'. To jest pierwszy krok, w którym obietnica zostaje spełniona. Następnie, w łańcuchu `then`, pierwsza funkcja `then` przyjmuje wynik obietnicy, czyli 'success', loguje go na konsolę, a następnie zwraca nowy tekst 'first then'. Druga funkcja `then` odbiera ten wynik i również go loguje. W rezultacie na konsoli pojawią się kolejno: 'success' oraz 'first then'. Taki sposób tworzenia łańcuchów obietnic jest zgodny z najlepszymi praktykami programowania asynchronicznego w JavaScript, ponieważ pozwala na czytelniejsze i bardziej zrozumiałe zarządzanie kodem asynchronicznym, eliminując złożoność związaną z tzw. „callback hell”. Warto zaznaczyć, że obietnice mogą być stosowane do radzenia sobie z żądaniami sieciowymi, operacjami na plikach czy innymi długotrwałymi procesami, co czyni je niezbędnym narzędziem w nowoczesnym programowaniu webowym.

Pytanie 16

Z analizy złożoności obliczeniowej algorytmów sortowania dla dużych zbiorów danych (powyżej 100 elementów) wynika, że najefektywniejszą metodą jest algorytm sortowania:

Ilustracja do pytania
A. kubełkowego
B. bąbelkowego
C. przez scalanie
D. przez zliczanie
Sortowanie przez zliczanie (Counting Sort) to jeden z najszybszych algorytmów sortowania dla dużych zbiorów danych, jeśli zakres wartości jest ograniczony. Algorytm działa w czasie O(n+k), gdzie n to liczba elementów, a k to zakres wartości. Jest to algorytm stabilny, co oznacza, że zachowuje kolejność elementów o tej samej wartości. Counting Sort jest szczególnie efektywny w przypadku danych numerycznych o ograniczonym przedziale wartości, co czyni go idealnym rozwiązaniem do sortowania dużych zbiorów danych w krótkim czasie.

Pytanie 17

Co będzie wynikiem działania poniższego kodu JavaScript?

const obj = { name: 'John', greet: function() { setTimeout(function() { console.log(`Hello, ${this.name}`); }, 1000); } }; obj.greet();

A. Hello, null
B. Hello, John
C. Hello, undefined
D. TypeError
Wynik działania tego kodu to `Hello, undefined`, co jest spowodowane tym, jak działa kontekst `this` w JavaScript. Gdy wywołujemy metodę `greet`, w kontekście tej metody `this` odnosi się do obiektu `obj`. Proszę zauważyć, że metoda `greet` używa funkcji anonimowej w `setTimeout`, a to zmienia kontekst `this`. W momencie, gdy `setTimeout` wywołuje funkcję, `this` nie odnosi się już do obiektu `obj`, lecz do globalnego obiektu (w przeglądarkach jest to `window`), gdzie `name` nie jest zdefiniowane. Dlatego w konsoli widzimy `Hello, undefined`. Takie zachowanie jest typowe dla JavaScript, więc warto zrozumieć, jak można to zmienić, np. używając funkcji strzałkowej (`() => {}`), która nie ma własnego kontekstu `this`, więc po prostu korzysta z kontekstu otaczającego. Użycie strzałek w takich przypadkach jest coraz częściej zalecane w nowoczesnym kodzie.

Pytanie 18

Które słowo kluczowe w C++ służy do definiowania klasy nadrzędnej?

A. class
B. public
C. base
D. virtual
Słowo kluczowe 'public' nie definiuje klasy – określa jedynie modyfikator dostępu, umożliwiający dostęp do pól i metod z zewnątrz klasy. 'Virtual' służy do deklarowania metod wirtualnych i wskazuje, że dana metoda może być przesłonięta w klasie pochodnej. 'Base' nie jest słowem kluczowym w C++ – w niektórych językach programowania oznacza klasę bazową, ale nie jest używane do definiowania klasy w C++.

Pytanie 19

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

A. Zarządzanie aplikacjami serwerowymi i realizacja przetwarzania asynchronicznego
B. Budowanie aplikacji mobilnych
C. Weryfikacja API
D. Kreowanie graficznego interfejsu użytkownika
Aplikacje mobilne to raczej domena takich narzędzi jak Android Studio czy React Native, które są zaprojektowane do tworzenia aplikacji na smartfony. Projektowanie interfejsów użytkownika raczej robimy w Adobe XD, Sketch czy Figma, a nie w Node.js, bo to nie do końca jego zadanie. Testowanie API to już inna bajka i zazwyczaj korzysta się z Postmana, a Node.js to bardziej środowisko do uruchamiania kodu, a nie do testów.

Pytanie 20

Która z poniższych deklaracji w języku C++ poprawnie opisuje tablicę dwuwymiarową?

A. int matrix[3];
B. int matrix[3][3];
C. int matrix[3][3][3];
D. int matrix[];
Deklaracja 'int matrix[3][3];' poprawnie definiuje tablicę dwuwymiarową w języku C++. Tablice dwuwymiarowe to kluczowe narzędzie do przechowywania macierzy i danych tabelarycznych. Każdy element macierzy jest dostępny poprzez dwa indeksy, co umożliwia łatwe odwzorowanie układów współrzędnych lub plansz w grach. Tablice tego rodzaju są wykorzystywane w algorytmach obliczeniowych, grafice komputerowej oraz analizie danych. Struktura 'matrix[3][3]' tworzy siatkę 3x3, która może przechowywać 9 elementów, co czyni ją efektywnym rozwiązaniem dla problemów wymagających przestrzennych danych.

Pytanie 21

Wskaż poprawny komentarz jednoliniowy, który można dodać w linii 3 w miejscu znaków zapytania, aby był zgodny ze składnią i opisywał operację przeprowadzoną w tej linii?

Ilustracja do pytania
A. // wypełnienie elementu tablicy
B. # wypełnienie elementu tablicy
C. // wyswietlenie elementu tablicy
D. # wyswietlenie elementu tablicy
Odpowiedź // wyswietlenie elementu tablicy jest poprawna, ponieważ komentarze jednoliniowe w języku C# rozpoczynają się od dwóch ukośników: //. W tym przypadku linia Console.WriteLine(i); odpowiedzialna jest za wyświetlenie elementu tablicy na konsoli. Komentarz ten poprawnie opisuje, co robi dana linia kodu, co jest dobrą praktyką w programowaniu, ponieważ ułatwia zrozumienie funkcji kodu innym programistom lub nawet nam samym w przyszłości. Komentarze są szczególnie przydatne, gdy kod jest skomplikowany i wymaga wyjaśnień. Warto zawsze stosować komentarze, by opisywały one istotne fragmenty kodu, co znacząco zwiększa jego czytelność i utrzymywalność. Praktyka dodawania takich opisów jest zgodna z zasadami czystego kodu, które promują czytelność i zrozumiałość. Dzięki takim komentarzom osoby przeglądające kod mogą szybko zorientować się, jakie funkcje pełnią poszczególne jego fragmenty, co usprawnia proces debugowania i dalszego rozwoju oprogramowania.

Pytanie 22

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

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

Pytanie 23

Które narzędzie najlepiej nadaje się do analizy wydajności aplikacji JavaScript?

A. Chrome DevTools Performance
B. Webpack
C. npm
D. Babel
Chrome DevTools Performance to potężne narzędzie, które jest integralną częścią przeglądarki Google Chrome i służy do analizy wydajności aplikacji JavaScript. Dzięki niemu możemy monitorować czas ładowania, identyfikować wąskie gardła w kodzie oraz analizować, jak różne elementy strony wpływają na ogólną wydajność. Narzędzie to umożliwia nagrywanie sesji wydajności, co pozwala na szczegółowe zbadanie, jak różne operacje wpływają na czas odpowiedzi aplikacji. Przykładowo, możemy użyć DevTools do analizy, które skrypty zajmują najwięcej czasu lub które zadania blokują wątek główny, co jest kluczowe dla zapewnienia płynności interfejsu użytkownika. Dodatkowo, narzędzie to oferuje różne metryki, takie jak FPS (frames per second), co jest niezbędne do oceny płynności animacji. Warto również podkreślić, że DevTools jest zgodne z najlepszymi praktykami branżowymi, a jego umiejętne wykorzystanie może znacząco poprawić jakość aplikacji.

Pytanie 24

Które z poniższych nie jest językiem programowania?

A. HTML
B. Ruby
C. Python
D. Kotlin
HTML (HyperText Markup Language) jest językiem znaczników, który służy do tworzenia struktury stron internetowych. Jest fundamentalnym elementem w budowie aplikacji webowych, ponieważ umożliwia definiowanie elementów takich jak nagłówki, akapity, obrazy, linki i wiele innych. HTML nie jest językiem programowania w sensie, w jakim są nimi Python, Ruby, czy Kotlin, ponieważ nie obsługuje logiki programowania, takiej jak zmienne, pętle czy warunki. Jego głównym celem jest struktura i prezentacja treści w przeglądarkach internetowych. HTML współpracuje z CSS (Cascading Style Sheets) do stylizacji oraz JavaScript do obsługi logiki i interakcji. Przykładowo, podczas tworzenia strony internetowej można użyć HTML do zbudowania struktury, CSS do nadania jej estetyki, a JavaScript do dodawania dynamicznych elementów, takich jak formularze czy interaktywne mapy. Dobrą praktyką jest również używanie semantycznego HTML, co poprawia dostępność oraz SEO, co jest szczególnie ważne w współczesnym internecie.

Pytanie 25

Które z wymienionych środowisk programistycznych jest rekomendowane do developing aplikacji w języku Python z użyciem frameworka Django?

A. Android Studio
B. PyCharm
C. XCode
D. Unity
PyCharm to jedno z najbardziej zaawansowanych środowisk programistycznych (IDE) dedykowanych do tworzenia aplikacji w języku Python. Jest to narzędzie preferowane przez programistów korzystających z frameworka Django, który jest popularnym rozwiązaniem do budowy aplikacji webowych. PyCharm oferuje rozbudowane wsparcie dla Django, umożliwiając szybkie tworzenie projektów, integrację z bazami danych oraz wygodne debugowanie aplikacji. IDE zapewnia również możliwość uruchamiania serwerów deweloperskich, podglądu zmian w czasie rzeczywistym oraz automatyczne uzupełnianie kodu, co znacząco zwiększa efektywność pracy nad aplikacjami webowymi. Dzięki PyCharm programiści mogą łatwo zarządzać migracjami bazy danych, tworzyć modele i szablony, co sprawia, że jest to narzędzie nieocenione w ekosystemie Django.

Pytanie 26

Jakie środowisko jest natywne do tworzenia aplikacji desktopowych w języku C#?

A. Eclipse
B. MS Visual Studio
C. PyCharm
D. NetBeans
MS Visual Studio to środowisko natywne do programowania aplikacji desktopowych w języku C#. To jedno z najczęściej używanych IDE do programowania w ekosystemie Microsoftu, oferujące wsparcie dla debugowania, projektowania interfejsu użytkownika i integracji z .NET. Visual Studio posiada również zaawansowane narzędzia do refaktoryzacji kodu, analizy oraz tworzenia aplikacji webowych i mobilnych.

Pytanie 27

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

A. React
B. Spring
C. WPF (Windows Presentation Foundation)
D. Qt
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 28

Co to jest algorytm QuickSort?

A. Metoda kompresji danych bez strat
B. Algorytm wyszukiwania binarnego w posortowanej tablicy
C. Wydajny algorytm sortowania oparty na strategii 'dziel i zwyciężaj'
D. Technika przeszukiwania grafu wszerz
Wysokiej jakości algorytmy sortowania, takie jak QuickSort, są niezbędne w obszarze przetwarzania danych, jednakże pomylenie ich z innymi technikami, jak na przykład algorytm wyszukiwania binarnego, prowadzi do fundamentalnych nieporozumień. Wyszukiwanie binarne to technika, która jest wykorzystywana jedynie w przypadku już posortowanych tablic – nie sortuje danych, a jedynie przyspiesza ich wyszukiwanie poprzez eliminację połowy pozostałych elementów na każdym etapie. Przykładowo, jeśli mamy posortowaną listę i chcemy znaleźć konkretny element, to wyszukiwanie binarne pozwala nam na szybkie odnalezienie go w czasie O(log n), ale nie ma zastosowania w kwestii sortowania danych. Podobnie, przeszukiwanie w grafach, które często stosuje się w kontekście algorytmów takich jak BFS (Breadth-First Search), jest całkowicie różne od problemu sortowania. Techniki te nie mają wspólnego mianownika z algorytmem QuickSort, ponieważ nie dotyczą one przekształcania zestawu danych w uporządkowaną formę. Również metoda kompresji danych bez strat jest odmiennym zagadnieniem; kompresja polega na redukcji rozmiaru danych, co również nie ma nic wspólnego z sortowaniem. Rozumienie różnic między tymi technikami jest kluczowe dla każdego, kto pracuje w branży IT, ponieważ ich niewłaściwe użycie może prowadzić do nieefektywności i błędnych konstrukcji programistycznych.

Pytanie 29

Jakiego kwalifikatora powinno się użyć dla metody, aby umożliwić do niej dostęp jedynie z wnętrza tej klasy oraz klas dziedziczących, a także, by metoda ta nie była dostępna w żadnej funkcji?

A. reinterpret_cast
B. public
C. private
D. protected
Metoda oznaczona jako 'protected' jest dostępna tylko z poziomu klasy oraz jej klas potomnych. Chroni to przed bezpośrednim dostępem spoza klasy, zapewniając większe bezpieczeństwo kodu i ograniczenie dostępu.

Pytanie 30

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

A. Dialog modalny umożliwia interakcję z innymi oknami aplikacji, a dialog niemodalny tego nie pozwala
B. Dialog modalny jest ograniczony wyłącznie do aplikacji konsolowych
C. Dialog modalny działa w tle, podczas gdy dialog niemodalny jest zawsze wyświetlany na pierwszym planie
D. Dialog modalny wymaga zamknięcia, aby powrócić do głównego okna aplikacji, natomiast dialog niemodalny tego nie wymaga
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 31

Na podstawie definicji zamieszczonej w ramce, wskaż, który z rysunków ilustruje komponent Chip zdefiniowany w bibliotece Angular Material?

Ilustracja do pytania
A. Rysunek 1
B. Rysunek 4
C. Rysunek 3
D. Rysunek 2
Komponent Chip w bibliotece Angular Material to interaktywny element, który reprezentuje fragment informacji, tag lub wybór. Może zawierać tekst, ikonę lub być klikalny, co czyni go niezwykle użytecznym w projektowaniu nowoczesnych interfejsów użytkownika. Komponenty tego typu często wykorzystywane są w formularzach lub systemach tagowania, umożliwiając użytkownikowi intuicyjne dodawanie lub usuwanie elementów. Wyróżnia się swoją minimalistyczną formą i możliwością dostosowania do różnych potrzeb projektowych.

Pytanie 32

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

A. Cykliczna zmiana haseł do kont
B. Tworzenie unikalnych oraz mocnych haseł
C. Klikanie w podejrzane linki w wiadomościach e-mail
D. Aktywacja uwierzytelniania dwuskładnikowego
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 33

Co to jest debouncing w JavaScript?

A. Metoda usuwania zduplikowanych zdarzeń w kodzie
B. Mechanizm zarządzania pamięcią dla zmiennych globalnych
C. Proces optymalizacji kodu JavaScript podczas kompilacji
D. Technika ograniczająca częstotliwość wywoływania funkcji poprzez opóźnienie jej wykonania
Debouncing to technika programistyczna stosowana w JavaScript, która ma na celu ograniczenie częstotliwości wywoływania funkcji poprzez wprowadzenie opóźnienia w jej wykonaniu. Zazwyczaj jest wykorzystywana w kontekście zdarzeń, takich jak przewijanie, zmiana rozmiaru okna czy wprowadzanie danych do formularzy. Przykładowo, przy użyciu debouncingu w funkcji, która wykonuje zapytanie do serwera podczas pisania w polu tekstowym, można ustawić opóźnienie, które uniemożliwi wielokrotne wywołanie funkcji przed upływem określonego czasu. Taki zabieg pozwala na zredukowanie liczby niepotrzebnych zapytań, co z kolei zmniejsza obciążenie serwera i poprawia wydajność aplikacji. W praktyce implementacja debouncingu często korzysta z techniki setTimeout, gdzie po każdym wywołaniu funkcji z resetowaniem timera czeka się na ostatnie wywołanie przed wykonaniem funkcji. Dobrym przykładem jest sytuacja, gdy użytkownik wpisuje tekst w polu wyszukiwania: zamiast wysyłać zapytanie za każdym razem, gdy zmienia się jego zawartość, można ustawić debouncing na 300 milisekund, co pozwala na wysłanie zapytania tylko po zakończeniu pisania, gdy użytkownik przestaje wprowadzać dane.

Pytanie 34

Jaką strukturę danych można zrealizować, korzystając jedynie z wymienionych poniżej metod:

Ilustracja do pytania
A. tablica
B. stos
C. kolejka
D. drzewo binarne
Stos (LIFO) to struktura danych, w której elementy dodawane są na wierzchołek i zdejmowane w odwrotnej kolejności (Last In, First Out). Podstawowe operacje to 'push' (dodanie elementu) i 'pop' (usunięcie elementu). Stos jest szeroko stosowany w algorytmach rekurencyjnych, wycofywaniu operacji (undo) i zarządzaniu pamięcią.

Pytanie 35

Który z wymienionych składników wchodzi w skład podstawowego wyposażenia środowiska IDE?

A. Kompilator, serwer webowy, system kontroli wersji
B. Edytor tekstowy, przeglądarka internetowa, translator
C. Kompilator, edytor kodu, debugger
D. Edytor graficzny, przeglądarka kodu, narzędzia analityczne
Edytor tekstowy, przeglądarka internetowa i translator nie są integralnymi komponentami środowiska IDE. Chociaż edytor tekstowy może być używany do pisania kodu, brakuje mu zaawansowanych funkcji dostępnych w edytorach IDE, takich jak podpowiedzi składniowe, automatyczne uzupełnianie kodu czy narzędzia do debugowania. Kompilator, serwer webowy i system kontroli wersji są ważne w środowisku webowym, ale nie wszystkie aplikacje desktopowe wymagają serwera webowego. Edytor graficzny i narzędzia analityczne mogą wspierać rozwój interfejsu, ale nie są to podstawowe narzędzia każdego IDE.

Pytanie 36

Która z poniższych nie jest poprawną metodą HTTP?

A. POST
B. DELETE
C. GET
D. SEARCH
Odpowiedź SEARCH jest prawidłowa, ponieważ metoda ta nie jest uznawana za standardową metodę HTTP określoną w dokumentach specyfikacji HTTP. W protokole HTTP, który jest podstawą komunikacji w Internecie, istnieje zestaw standardowych metod, takich jak GET, POST i DELETE. GET służy do pobierania zasobów z serwera, POST do wysyłania danych na serwer, a DELETE do usuwania zasobów. Metoda SEARCH nie znajduje się w dokumentacji IETF dotyczącej HTTP, co oznacza, że nie jest zdefiniowana ani szeroko stosowana w praktyce. Warto zwrócić uwagę na to, że standardowe metody HTTP są kluczowe w projektowaniu API oraz architekturze aplikacji webowych, ponieważ zapewniają one spójność i przewidywalność w interakcji z serwerami. Znajomość tych metod jest niezbędna dla programistów pracujących z RESTful API, gdzie poprawne użycie metod HTTP ma kluczowe znaczenie dla efektywności i bezpieczeństwa aplikacji.

Pytanie 37

Które z wymienionych stwierdzeń najcelniej opisuje proces uruchamiania aplikacji?

A. Tłumaczenie kodu źródłowego na język pośredni
B. Wykonywanie programu na podstawie przetłumaczonego kodu maszynowego
C. Generowanie pliku źródłowego
D. Przetwarzanie kodu źródłowego przez kompilator
Uruchomienie programu to naprawdę ważny moment, bo w tym czasie procesor zaczyna działać na kodzie maszynowym. Ten kod powstaje podczas kompilacji, która zamienia kod źródłowy na coś, co komputer rozumie. W tym etapie program trafia do pamięci, a także przygotowywane są różne dane do działania. Tak więc, to jest kluczowy krok w całej historii programu, bo decyduje, jak dobrze będzie działać.

Pytanie 38

Jakie ma znaczenie operator "==" w języku C++?

A. Przypisanie wartości do zmiennej
B. Porównanie dwóch wartości
C. Negacja logiczna
D. Zwiększenie wartości zmiennej o 1
Operator `==` w języku C++ oraz w wielu innych językach programowania, takich jak Java, Python czy JavaScript, jest używany do porównywania dwóch wartości. Jeśli wartości są równe, zwracana jest wartość logiczna `true`, w przeciwnym razie `false`. Operator ten jest niezbędny w instrukcjach warunkowych i pętlach, umożliwiając programowi podejmowanie decyzji na podstawie porównań. Przykładem użycia jest `if (a == b)`, co oznacza: jeśli zmienna `a` jest równa zmiennej `b`, wykonaj określony blok kodu.

Pytanie 39

Co to jest garbage collection w programowaniu?

A. Automatyczne zarządzanie pamięcią, które zwalnia pamięć zajmowaną przez nieużywane obiekty
B. Proces usuwania nieużywanych elementów z interfejsu użytkownika
C. Metoda kompresji danych w bazach SQL
D. Technika optymalizacji algorytmów sortowania danych
Garbage collection (GC) to kluczowy proces w wielu językach programowania, takich jak Java, C# czy Python, odpowiedzialny za automatyczne zarządzanie pamięcią. Dzięki mechanizmowi GC możliwe jest wykrywanie oraz zwalnianie pamięci zajmowanej przez obiekty, które nie są już używane w aplikacji. W praktyce oznacza to, że programista nie musi ręcznie zarządzać cyklem życia obiektów, co minimalizuje ryzyko wycieków pamięci i poprawia stabilność aplikacji. Mechanizm ten działa zazwyczaj w tle, analizując dostępność obiektów w pamięci oraz ich referencje. Przykładem zastosowania GC jest optymalizacja pamięci w aplikacjach serwerowych, gdzie długotrwałe działanie i efektywne zarządzanie zasobami są krytyczne. Użycie garbage collection zgodnie z dobrymi praktykami pozwala na pisanie bardziej przejrzystego i łatwiejszego w utrzymaniu kodu, co jest szczególnie ważne w projektach realizowanych w zespołach. Warto również wspomnieć, że różne implementacje GC (np. generacyjne kolekcje, inkrementalne zbieranie śmieci) mają różne podejścia do zarządzania pamięcią, co może wpływać na wydajność aplikacji.

Pytanie 40

Jakie jest podstawowe zadanie funkcji zaprzyjaźnionej w danej klasie?

A. Umożliwienie funkcji dostępu do prywatnych atrybutów klasy
B. Dodawanie nowych instancji do klasy
C. Generowanie kopii pól obiektu w innej klasie
D. Ograniczenie widoczności atrybutów klasy
Funkcja zaprzyjaźniona umożliwia dostęp do prywatnych i chronionych składowych klasy, z którą jest zaprzyjaźniona. To mechanizm, który pozwala na utrzymanie hermetyzacji, jednocześnie umożliwiając wybranym funkcjom lub klasom bezpośredni dostęp do wewnętrznych danych innej klasy. Funkcje zaprzyjaźnione często są stosowane do operacji, które wymagają dostępu do wewnętrznych danych klasy, ale nie powinny być jej metodami, np. operacje arytmetyczne lub porównawcze na obiektach tej klasy.