Pytania pomocnicze - INF.04

Projektowanie, programowanie i testowanie aplikacji

Pytania pomocnicze rozwijające tematy z pytań egzaminacyjnych. Każde pytanie ma krótką odpowiedź, która pomaga utrwalić wiedzę i przygotować się do egzaminu. Łącznie: 3064.
Strona 23 z 40.

Dlaczego JSON jest często używany do przesyłania danych między serwerem a front-endem?

JSON jest lekki, czytelny dla człowieka i łatwy do przetwarzania w JavaScripcie. Dzięki temu dobrze nadaje się do wymiany danych między back-endem a aplikacją front-endową.

Czym różni się format danych od metody przesyłania danych?

Format danych określa sposób zapisu informacji, np. JSON lub XML. Metoda przesyłania określa sposób komunikacji, np. HTTP GET lub POST.

Czy jQuery jest formatem przesyłania danych?

Nie. jQuery to biblioteka JavaScript, która może ułatwiać wykonywanie zapytań do serwera, ale sama nie jest formatem danych.

Do czego służy metoda POST w komunikacji klient-serwer?

POST to metoda protokołu HTTP używana najczęściej do wysyłania danych z klienta do serwera, np. danych formularza. Nie jest formatem danych.

Dlaczego SSH nie jest poprawną odpowiedzią w tym pytaniu?

SSH to protokół służący głównie do bezpiecznego zdalnego logowania i administracji serwerem. Nie jest typowym formatem wymiany danych między serwerem a aplikacją front-end.

Jak front-end najczęściej odbiera dane JSON z serwera?

Front-end wysyła żądanie HTTP, np. za pomocą funkcji fetch lub biblioteki Axios, a serwer zwraca odpowiedź w formacie JSON. Następnie dane są parsowane i wyświetlane w interfejsie użytkownika.

Dlaczego sortowanie przez zliczanie jest w tym pytaniu najefektywniejsze?

Ponieważ w tabeli ma złożoność O(n), czyli liniową. Dla dużych danych rośnie wolniej niż O(n log n) i O(n²).

Co oznacza złożoność O(n²) przy algorytmach sortowania?

Oznacza, że liczba operacji rośnie w przybliżeniu proporcjonalnie do kwadratu liczby elementów. Dla dużych zbiorów takie algorytmy stają się mało wydajne.

Dlaczego sortowanie przez scalanie jest lepsze od bąbelkowego dla dużych danych?

Sortowanie przez scalanie ma złożoność O(n log n), a bąbelkowe O(n²). O(n log n) rośnie znacznie wolniej niż O(n²).

Czy sortowanie przez zliczanie zawsze jest najlepszym algorytmem sortowania?

Nie zawsze. Jest bardzo szybkie dla liczb całkowitych z ograniczonego zakresu, ale może zużywać dużo pamięci, gdy zakres wartości jest bardzo duży.

Co oznacza litera n w zapisie złożoności obliczeniowej?

Litera n oznacza rozmiar danych wejściowych, na przykład liczbę elementów w tablicy do posortowania.

Jak porównać złożoności O(n), O(n log n) i O(n²)?

Dla dużych danych O(n) jest zwykle najlepsze, O(n log n) pośrednie, a O(n²) najwolniejsze spośród tych trzech.

Dlaczego przy małych zbiorach danych różnice między algorytmami mogą być mniej widoczne?

Dla małej liczby elementów narzut implementacyjny i stałe czynniki mogą mieć większe znaczenie niż sama złożoność asymptotyczna.

Dlaczego klasa Prostokąt musi zaimplementować metody Pole() i Obwod()?

Ponieważ dziedziczy po abstrakcyjnej klasie Figura, która deklaruje abstrakcyjne metody Pole() i Obwod(). Klasa nieabstrakcyjna musi dostarczyć implementacje wszystkich odziedziczonych metod abstrakcyjnych.

Dlaczego poprawna jest implementacja z Kodu 1?

Kod 1 zawiera metody o takich samych nazwach i typach zwracanych jak w klasie abstrakcyjnej: Pole() oraz Obwod(). Obie metody zwracają wartości typu double i obliczają odpowiednio pole oraz obwód prostokąta.

Dlaczego Kod 2 nie jest wystarczający?

Kod 2 implementuje tylko metodę Pole(), ale brakuje w nim metody Obwod(). Klasa Prostokąt nadal miałaby więc niezaimplementowaną metodę abstrakcyjną.

Dlaczego Kod 3 nie spełnia wymagań klasy Figura?

Kod 3 zawiera metody LiczPole() i LiczObwod(), czyli metody o innych nazwach niż Pole() i Obwod(). Nie są to implementacje metod abstrakcyjnych zadeklarowanych w klasie Figura.

Dlaczego Kod 4 jest błędny jako implementacja metod klasy Prostokąt?

Kod 4 nadal deklaruje metody jako abstract, a metoda abstrakcyjna nie może mieć ciała z instrukcją return. Poza tym klasa Prostokąt miałaby pozostać abstrakcyjna, jeśli nie zaimplementuje tych metod.

Co oznacza zgodność sygnatury metody przy nadpisywaniu?

Metoda w klasie potomnej musi mieć taką samą nazwę, listę parametrów i zgodny typ zwracany jak metoda z klasy bazowej. W tym przypadku chodzi o double Pole() oraz double Obwod().

Czy metoda nadpisująca może mieć szerszy modyfikator dostępu?

Tak. W Javie metoda nadpisująca może mieć taki sam lub szerszy dostęp niż metoda w klasie bazowej. Dlatego public double Pole() może poprawnie implementować metodę abstract double Pole().

Czym jest WCAG 2.0?

WCAG 2.0 to standard opisujący zasady tworzenia dostępnych stron i aplikacji internetowych. Jego celem jest ułatwienie korzystania z treści cyfrowych wszystkim użytkownikom, także osobom z niepełnosprawnościami.

Co oznacza zasada postrzegalności w WCAG?

Postrzegalność oznacza, że treści oraz elementy interfejsu muszą być przedstawione tak, aby użytkownik mógł je zauważyć, odczytać lub odebrać za pomocą technologii wspomagających.

Dlaczego odpowiedź dotycząca prezentacji elementów interfejsu jest poprawna?

Ponieważ percepcja w WCAG odnosi się do tego, jak treść i interfejs są prezentowane użytkownikowi. Chodzi o widoczność, czytelność, kontrast, teksty alternatywne i inne cechy odbioru informacji.

Która zasada WCAG dotyczy obsługi strony za pomocą klawiatury?

Obsługa za pomocą klawiatury należy do zasady funkcjonalności, czyli operable. Nie jest to zasada postrzegalności.

Która zasada WCAG dotyczy zrozumiałości treści?

Zrozumiałość treści należy do zasady understandable. Obejmuje jasny język, przewidywalne działanie strony i pomoc w unikaniu błędów.

Jakie są przykłady wymagań związanych z postrzegalnością?

Przykładami są tekst alternatywny dla obrazów, odpowiedni kontrast kolorów, napisy do filmów oraz możliwość powiększenia tekstu bez utraty czytelności.

Jak zapamiętać cztery główne zasady WCAG?

Można użyć skrótu POUR: Perceivable, Operable, Understandable, Robust. Po polsku: postrzegalność, funkcjonalność, zrozumiałość i solidność.

Dlaczego Angular pasuje do tworzenia aplikacji front-end?

Angular jest frameworkiem front-endowym służącym do tworzenia aplikacji webowych działających po stronie przeglądarki. Umożliwia budowanie komponentów, obsługę zdarzeń, routingu i komunikacji z API.

Czym różni się front-end od back-endu?

Front-end to część aplikacji widoczna dla użytkownika, np. interfejs w przeglądarce. Back-end odpowiada za logikę serwera, bazę danych, autoryzację i udostępnianie danych przez API.

Czy sama znajomość HTML i CSS wystarcza do stworzenia aplikacji front-end?

HTML i CSS wystarczają do stworzenia statycznego interfejsu, ale przy rozbudowanych aplikacjach potrzebny jest zwykle JavaScript oraz framework, np. Angular. Dlatego w tym pytaniu lepszym wyborem jest osoba znająca Angular.

Dlaczego Django i .NET nie są najlepszym wyborem do zadania front-endowego?

Django i .NET są kojarzone głównie z tworzeniem back-endu, czyli części serwerowej aplikacji. Mogą generować widoki, ale nie są typowymi technologiami front-endowymi.

Jaką rolę w projekcie IT może pełnić osoba znająca Inkscape i Corel Draw?

Inkscape i Corel Draw to programy graficzne, więc taka osoba może przygotowywać grafiki, ikony, makiety lub materiały wizualne. Nie oznacza to jednak kompetencji do programowania aplikacji front-end.

Jak rozpoznać w pytaniu egzaminacyjnym technologię front-endową?

Należy szukać nazw związanych z interfejsem użytkownika i aplikacjami w przeglądarce, np. Angular, React, HTML, CSS, JavaScript. Technologie serwerowe, takie jak Django, wskazują raczej na back-end.

Jak StackLayout rozmieszcza kontrolki, jeśli nie podano właściwości Orientation?

Domyślnie `StackLayout` układa elementy pionowo, jeden pod drugim. Dlatego pola `Entry`, sekcja z etykietą i przełącznikiem, suwak oraz przycisk pojawią się w kolejnych wierszach.

Co oznacza Orientation="Horizontal" w zagnieżdżonym StackLayout?

Oznacza, że elementy wewnątrz tego układu są ustawione obok siebie w jednym wierszu. W tym przykładzie obok siebie pojawią się napis `Zgoda RODO` oraz przełącznik `Switch`.

Jaką rolę pełni Placeholder w kontrolce Entry?

`Placeholder` to tekst podpowiedzi widoczny w pustym polu tekstowym. Nie jest to wartość wpisana przez użytkownika.

Co oznacza IsToggled="True" w kontrolce Switch?

Właściwość `IsToggled="True"` oznacza, że przełącznik jest włączony. Na rysunku powinien więc być pokazany w stanie aktywnym.

Jak interpretować Value="0.5" w kontrolce Slider?

Wartość `0.5` zwykle oznacza połowę zakresu suwaka, jeśli nie ustawiono innych wartości `Minimum` i `Maximum`. Uchwyt suwaka powinien znajdować się mniej więcej na środku.

Dlaczego poprawny jest rysunek 4?

Pokazuje dwa pola tekstowe `Imię` i `Nazwisko`, poziomy układ etykiety `Zgoda RODO` z włączonym przełącznikiem, suwak ustawiony około połowy oraz przycisk `ZAPISZ`. Odpowiada to kolejności i właściwościom z kodu XAML.

Czym różni się układ pionowy od poziomego w XAML?

Układ pionowy ustawia elementy jeden pod drugim, a poziomy obok siebie. W tym kodzie główny `StackLayout` jest pionowy, a zagnieżdżony `StackLayout` z etykietą i przełącznikiem jest poziomy.

Po czym rozpoznać słownik w Pythonie w zapisie kodu?

Słownik zapisuje się w nawiasach klamrowych `{}` jako pary `klucz: wartość`. W przykładzie kluczami są symbole pierwiastków, np. `"N"`, a wartościami ich nazwy, np. `"Azot"`.

Czym jest tablica asocjacyjna?

Tablica asocjacyjna to struktura danych przechowująca pary klucz-wartość. Dostęp do danych odbywa się przez klucz, a nie przez numer indeksu.

Dlaczego podany kod nie przedstawia stosu ani kolejki LIFO?

Stos działa według zasady LIFO, czyli ostatni element dodany jest zdejmowany jako pierwszy. W podanym kodzie nie ma operacji dodawania i zdejmowania elementów, tylko mapa kluczy do wartości.

Jak odczytać wartość ze słownika w Pythonie?

Wartość odczytuje się przez podanie klucza w nawiasach kwadratowych, np. `pierwiastki["O"]` zwróci `"Tlen"`.

Czy klucze w słowniku Pythona muszą być unikalne?

Tak, każdy klucz w słowniku musi być unikalny. Jeśli ten sam klucz zostanie wpisany ponownie, poprzednia wartość zostanie nadpisana.

Jaka jest różnica między listą a słownikiem w Pythonie?

Lista przechowuje elementy w kolejności i odwołuje się do nich przez indeks liczbowy. Słownik przechowuje pary klucz-wartość i odwołuje się do wartości przez klucz.

Co oznacza modyfikator dostępu protected przed metodą klasy?

Modyfikator protected oznacza, że metoda jest dostępna wewnątrz klasy, w której została zdefiniowana, oraz w klasach po niej dziedziczących. Nie można jej zwykle wywołać bezpośrednio z programu głównego na obiekcie tej klasy.

Czym protected różni się od private?

Private ogranicza dostęp tylko do wnętrza tej samej klasy. Protected pozwala dodatkowo korzystać z elementu w klasach pochodnych.

Czym protected różni się od public?

Public pozwala wywołać metodę praktycznie z dowolnego miejsca, np. na instancji obiektu. Protected ogranicza dostęp do klasy bazowej i klas dziedziczących.

Czy metodę protected można wywołać w programie głównym na obiekcie klasy?

Nie, typowo nie można wywołać metody protected bezpośrednio na instancji, np. kalkulator.Dodaj(). Taki dostęp jest zarezerwowany dla wnętrza klasy i jej klas pochodnych.

Dlaczego protected jest przydatne przy dziedziczeniu?

Pozwala klasie bazowej udostępnić wybrane elementy klasom potomnym, ale jednocześnie ukryć je przed kodem zewnętrznym. Wspiera to hermetyzację i kontrolę dostępu.

Co oznacza zapis void w definicji metody protected void Dodaj()?

Słowo void oznacza, że metoda nie zwraca żadnej wartości. Może wykonywać operacje, ale nie przekazuje wyniku przez return.

Jaki jest główny cel wzorca Obserwator?

Celem jest powiadamianie jednych obiektów o zmianie stanu innego obiektu. Dzięki temu obiekty mogą reagować bez ścisłego powiązania ze sobą.

Jakie role występują we wzorcu Obserwator?

Najczęściej występuje obiekt obserwowany, czyli Subject lub Publisher, oraz obserwatorzy, czyli Observerzy lub Subscriberzy. Subject powiadamia obserwatorów o zmianach.

Dlaczego wzorzec Obserwator jest przydatny w aplikacjach WEB?

Pozwala automatycznie reagować na zmiany danych, zdarzenia użytkownika lub aktualizacje stanu aplikacji. Ułatwia tworzenie dynamicznych interfejsów.

Czym różni się Obserwator od zwykłego bezpośredniego wywołania metody?

Przy bezpośrednim wywołaniu jeden obiekt musi znać konkretny drugi obiekt. W Obserwatorze obiekt obserwowany informuje wszystkich zapisanych obserwatorów, nie musząc znać szczegółów ich działania.

Co oznacza metoda notify we wzorcu Obserwator?

Metoda notify odpowiada za powiadomienie wszystkich zarejestrowanych obserwatorów o zmianie. Zwykle przekazuje im informację o nowym stanie lub zdarzeniu.

Czy obsługa zdarzeń w JavaScript przypomina wzorzec Obserwator?

Tak. Mechanizm dodawania nasłuchiwaczy zdarzeń, np. kliknięcia przycisku, jest podobny do Obserwatora: obiekt emituje zdarzenie, a zarejestrowane funkcje reagują.

Jaką korzyść daje możliwość odsubskrybowania obserwatora?

Pozwala usunąć obiekt z listy powiadamianych, gdy nie jest już potrzebny. Zmniejsza to ryzyko niepotrzebnych wywołań i wycieków pamięci.

Jak rozpoznać na schemacie blokowym, że algorytm zawiera pętlę?

Pętla występuje wtedy, gdy po wykonaniu instrukcji sterowanie wraca do wcześniejszego warunku lub bloku. Na schemacie widać strzałkę powrotną do warunku.

Dlaczego w tym algorytmie należy użyć instrukcji while?

Ponieważ instrukcje mają być wykonywane wielokrotnie, dopóki warunek `number != 10` jest prawdziwy. To typowy przypadek pętli `while`.

Co oznacza warunek `number != 10`?

Oznacza: „number jest różne od 10”. Pętla działa tak długo, jak zmienna `number` nie ma wartości 10.

Jakie wartości przyjmuje zmienna number w przedstawionym algorytmie?

Zmienna zaczyna od wartości 2, a następnie jest zwiększana o 2: 4, 6, 8, 10. Po osiągnięciu 10 pętla się kończy.

Dlaczego instrukcja if nie jest najlepszą odpowiedzią w tym zadaniu?

Instrukcja `if` sprawdza warunek tylko raz i nie powoduje automatycznego powtarzania instrukcji. W algorytmie potrzebne jest wielokrotne wykonanie bloku.

Czym różni się while od do-while?

`while` sprawdza warunek przed pierwszym wykonaniem bloku, więc blok może nie wykonać się ani razu. `do-while` wykonuje blok co najmniej raz, a dopiero potem sprawdza warunek.

Co robi instrukcja `number += 2`?

Zwiększa wartość zmiennej `number` o 2. Jest to skrócony zapis instrukcji `number = number + 2`.