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: 1799.
Strona 17 z 20.
Jakie cyfry występują w systemie szesnastkowym?
W systemie szesnastkowym występują cyfry od 0 do 9 oraz litery A, B, C, D, E, F. Litery oznaczają wartości od 10 do 15.
Dlaczego w liczbie szesnastkowej używa się potęg liczby 16?
Ponieważ system szesnastkowy ma podstawę 16. Każda pozycja liczby odpowiada kolejnej potędze 16, licząc od prawej strony.
Jaką wartość dziesiętną ma litera A w systemie szesnastkowym?
Litera A oznacza wartość 10. Kolejne litery mają wartości: B = 11, C = 12, D = 13, E = 14, F = 15.
Jak przeliczyć liczbę 1AF z systemu szesnastkowego na dziesiętny?
Należy obliczyć: 1 · 16² + 10 · 16¹ + 15 · 16⁰. Wynik to 256 + 160 + 15 = 431.
Od której strony zaczyna się przypisywanie potęg przy konwersji liczby szesnastkowej?
Od prawej strony. Ostatnia cyfra ma wagę 16⁰, kolejna 16¹, następna 16² itd.
Czym różni się zapis szesnastkowy od dziesiętnego?
Zapis dziesiętny ma podstawę 10 i używa cyfr 0–9. Zapis szesnastkowy ma podstawę 16 i oprócz cyfr 0–9 używa liter A–F.
Do czego służy destruktor w klasie C++?
Destruktor wykonuje operacje związane z niszczeniem obiektu. Najczęściej służy do zwalniania zasobów lub wypisania komunikatu diagnostycznego.
Czym różni się konstruktor od destruktora?
Konstruktor jest wywoływany podczas tworzenia obiektu, a destruktor podczas jego niszczenia. Konstruktor ma nazwę klasy, a destruktor nazwę klasy poprzedzoną znakiem `~`.
Dlaczego komunikat „Obiekt został usunięty” pasuje do destruktora?
Ponieważ destruktor jest metodą uruchamianą wtedy, gdy obiekt jest usuwany lub kończy się jego czas życia. To właściwe miejsce na taki komunikat diagnostyczny.
Czy destruktor może zwracać wartość?
Nie. Destruktor w C++ nie ma typu zwracanego, nawet `void`.
Do czego służy metoda `operator==` w klasie?
Metoda `operator==` służy do przeciążenia operatora porównania. Umożliwia określenie, kiedy dwa obiekty danej klasy mają być uznane za równe.
Czym jest metoda statyczna w klasie?
Metoda statyczna należy do klasy, a nie do konkretnego obiektu. Można ją wywołać bez tworzenia instancji klasy.
Kiedy destruktor obiektu lokalnego zostanie wywołany automatycznie?
Destruktor obiektu lokalnego zostanie wywołany po opuszczeniu zakresu, w którym obiekt został utworzony, np. po zakończeniu funkcji.
Do czego służy typ logiczny w programowaniu?
Typ logiczny służy do przechowywania informacji prawda/fałsz. Najczęściej wykorzystuje się go w instrukcjach warunkowych i pętlach.
Jakie wartości może przyjąć zmienna typu boolean?
Zmienna typu boolean może przyjąć tylko dwie wartości: `true` albo `false`.
Czy liczba 0 jest tym samym co wartość false?
Nie zawsze. W niektórych językach 0 może być konwertowane na fałsz, ale wartością typu logicznego jest formalnie `false`, a nie liczba 0.
Gdzie najczęściej używa się wartości true i false?
Najczęściej używa się ich w warunkach, np. w instrukcji `if`, oraz przy przechowywaniu stanów typu: zalogowany/niezalogowany, aktywny/nieaktywny.
Jaka jest różnica między typem logicznym a typem całkowitym?
Typ logiczny przechowuje tylko prawdę lub fałsz. Typ całkowity przechowuje liczby całkowite, np. -1, 0, 1, 25.
Dlaczego odpowiedź true, false jest poprawna w pytaniu egzaminacyjnym?
Ponieważ są to dwie standardowe wartości typu logicznego. Pozostałe odpowiedzi opisują liczby, a nie wartości logiczne.
Czym jest komponent Chip w Angular Material?
Chip to mała etykieta interfejsu, zwykle z zaokrąglonymi rogami, używana do prezentowania krótkich elementów, np. tagów, filtrów lub cech.
Jak wizualnie rozpoznać komponent Chips?
Chips wyglądają jak zestaw małych „pastylek” z tekstem. Najczęściej są ułożone obok siebie i reprezentują krótkie informacje lub opcje.
Do czego można wykorzystać Chips w aplikacji webowej?
Można ich użyć do tagów, kategorii, filtrów, listy wybranych elementów albo oznaczania właściwości danego obiektu.
Czym Chips różnią się od zakładek Tabs?
Tabs służą do przełączania widoków lub sekcji strony, a Chips do prezentowania małych elementów informacyjnych lub wyboru krótkich opcji.
Czym Angular Material różni się od samego Angulara?
Angular to framework do budowy aplikacji webowych, a Angular Material to biblioteka gotowych komponentów UI zgodnych z Material Design.
Jakie inne komponenty Angular Material mogą pojawić się na podobnych ilustracjach?
Mogą to być m.in. button, radio button, checkbox, tabs, sidenav, datepicker, toolbar, card lub menu.
Dlaczego imię i nazwisko powinny być zapisane jako String?
Imię i nazwisko są tekstem składającym się z wielu znaków, dlatego najlepszym typem jest `String`. Typ `char` przechowuje tylko pojedynczy znak.
Dlaczego wiek najczęściej zapisuje się jako int?
Wiek zwykle jest liczbą całkowitą, np. 34, bez części ułamkowej. Dlatego pasuje do typu `int`.
Jaki typ najlepiej pasuje do pola „Dostępne środki”?
Ponieważ pole może zawierać wartość z częścią ułamkową, np. 1200,54, powinien to być typ rzeczywisty, np. `float` lub `double`.
Dlaczego pole „Konto aktywne?” powinno mieć typ boolean?
To pole ma tylko dwa możliwe stany: aktywne albo nieaktywne. Typ `boolean` przechowuje wartości `true` lub `false`, więc najlepiej pasuje do przełącznika.
Dlaczego odpowiedź z typem short dla pola aktywne nie jest najlepsza?
`short` jest typem liczbowym całkowitym, a nie logicznym. Do informacji typu tak/nie należy używać typu `boolean`.
Czym różni się String od typów liczbowych?
`String` przechowuje tekst, np. imię lub nazwisko. Typy liczbowe, takie jak `int` i `float`, służą do wykonywania obliczeń na liczbach.
Dlaczego kod 2 najlepiej odpowiada danym z formularza?
Kod 2 poprawnie dobiera typy: `String` dla imienia i nazwiska, `int` dla wieku, `float` dla środków oraz `boolean` dla aktywności konta.
Czym jest FPU w procesorze?
FPU to jednostka zmiennoprzecinkowa procesora. Odpowiada za obliczenia na liczbach z częścią ułamkową, np. typu float i double.
Jaka jest różnica między FPU a ALU?
ALU wykonuje podstawowe operacje arytmetyczno-logiczne, głównie na liczbach całkowitych. FPU jest wyspecjalizowana w obliczeniach na liczbach zmiennoprzecinkowych.
Dlaczego odpowiedzią w pytaniu jest FPU, a nie ALU?
Ponieważ pytanie dotyczy liczb zmiennoprzecinkowych. Takie obliczenia wykonuje Floating Point Unit, czyli FPU.
Co oznaczają liczby zmiennoprzecinkowe?
Są to liczby mogące zawierać część ułamkową, np. 3.14 lub -0.25. W programowaniu reprezentują je m.in. typy float i double.
Do czego w praktyce potrzebne są szybkie obliczenia zmiennoprzecinkowe?
Są ważne w grafice komputerowej, grach, symulacjach, obliczeniach naukowych i przetwarzaniu sygnałów. W takich zastosowaniach wykonuje się bardzo wiele działań na liczbach rzeczywistych.
Czy FPU jest osobnym układem czy częścią procesora?
W nowoczesnych procesorach FPU jest zwykle zintegrowana wewnątrz CPU. Dawniej mogła występować jako oddzielny koprocesor matematyczny.
Jak zapisać warunek sprawdzający, czy liczba jest dwucyfrowa?
Dla dodatniej liczby całkowitej należy sprawdzić, czy jest większa od 9 i mniejsza od 100: `x > 9 && x < 100`.
Dlaczego w tym zadaniu należy użyć operatora `&&`, a nie `||`?
Ponieważ liczba musi spełniać wszystkie warunki jednocześnie: być dwucyfrowa i podzielna przez 4. Operator `||` wymaga spełnienia tylko jednego z warunków.
Jak sprawdzić, czy liczba jest podzielna przez 4?
Należy użyć operatora modulo i sprawdzić resztę z dzielenia: `x % 4 == 0`. Jeśli reszta wynosi 0, liczba jest podzielna przez 4.
Dlaczego zapis `x / 4 == 0` nie sprawdza podzielności przez 4?
Operator `/` wykonuje dzielenie, a nie sprawdzanie reszty. Do badania podzielności używa się operatora `%`, czyli modulo.
Jakie liczby spełniają warunek `x > 9 && x < 100`?
Warunek spełniają liczby całkowite od 10 do 99, czyli dodatnie liczby dwucyfrowe.
Co oznacza warunek `(x > 9 && x < 100) && (x % 4 == 0)`?
Oznacza, że `x` musi być liczbą od 10 do 99 oraz musi dzielić się przez 4 bez reszty.
Dlaczego odpowiedź C jest błędna?
Ponieważ używa operatora `||`, więc wystarczy, że liczba będzie dwucyfrowa albo podzielna przez 4. Warunek przepuściłby np. liczbę 8, bo jest podzielna przez 4, mimo że nie jest dwucyfrowa.
Dlaczego złożoność quicksorta zależy od wyboru elementu dzielącego?
Pivot decyduje o tym, jak tablica zostanie podzielona na części. Im bardziej równy podział, tym szybsze działanie algorytmu.
Jaka jest średnia złożoność obliczeniowa quicksorta?
Średnia złożoność quicksorta wynosi O(n log n). Taki wynik uzyskuje się zwykle przy losowych danych lub dobrym wyborze pivota.
Kiedy quicksort osiąga złożoność O(n²)?
Dzieje się tak, gdy pivot stale dzieli dane bardzo nierówno, np. jedna część jest pusta, a druga zawiera prawie wszystkie elementy.
Czy quicksort jest zawsze szybszy od sortowania bąbelkowego?
Nie zawsze. Średnio quicksort jest znacznie lepszy, ale w najgorszym przypadku może mieć złożoność O(n²), tak jak sortowanie bąbelkowe.
Na czym polega strategia dziel i zwyciężaj w quicksort?
Algorytm dzieli tablicę względem pivota na mniejsze części, a następnie sortuje każdą z nich rekurencyjnie.
Czym różni się przypadek średni od pesymistycznego w analizie quicksorta?
Przypadek średni zakłada typowe, niezłośliwe dane i daje O(n log n). Przypadek pesymistyczny opisuje najgorszy możliwy układ danych i może dać O(n²).
Jak można zmniejszyć ryzyko najgorszego przypadku w quicksort?
Można losować pivota albo stosować metodę mediany z trzech. Dzięki temu maleje ryzyko ciągle nierównych podziałów.
Co zostanie wyświetlone w przeglądarce po użyciu *ngFor dla tablicy trzech elementów?
Zostaną utworzone trzy elementy HTML, po jednym dla każdego elementu tablicy. W tym przypadku będą to trzy paragrafy z tekstami: tag1, tag2 i tag3.
Jak działa zapis let tag of tags w Angularze?
Oznacza iterację po tablicy `tags`. W każdej iteracji zmienna `tag` przechowuje aktualny element tablicy.
Do czego służą podwójne nawiasy klamrowe {{ }} w Angularze?
Służą do interpolacji, czyli wstawienia wartości zmiennej lub wyrażenia do szablonu HTML. `{{ tag }}` wyświetla wartość zmiennej `tag`.
Jak React renderuje listę elementów na podstawie tablicy?
Najczęściej używa się metody `map()`, która zamienia każdy element tablicy na element JSX, np. osobny paragraf.
Dlaczego w React użyto składni {tag}, a nie tekstu tag?
W JSX pojedyncze nawiasy klamrowe oznaczają wstawienie wartości wyrażenia JavaScript. `{tag}` wyświetla wartość zmiennej, a nie dosłowny tekst „tag”.
Czy atrybut key w React zostanie wyświetlony w przeglądarce?
Nie. `key` jest używany wewnętrznie przez React do identyfikowania elementów listy podczas renderowania i aktualizacji widoku.
Dlaczego poprawną odpowiedzią są trzy paragrafy, a nie jeden paragraf z całą tablicą?
Zarówno Angular `*ngFor`, jak i React `map()` powtarzają element `<p>` dla każdego elementu tablicy. Tablica ma trzy elementy, więc powstaną trzy paragrafy.
Po co przygotowuje się kilka wersji tej samej grafiki w aplikacji mobilnej?
Różne urządzenia mają ekrany o różnej gęstości pikseli. Kilka wariantów grafiki pozwala zachować ostrość obrazu bez rozciągania lub rozmycia.
Jak iOS rozpoznaje warianty grafik dla ekranów o większej gęstości?
W iOS stosuje się sufiksy w nazwach plików, np. `@2x` i `@3x`. System automatycznie wybiera odpowiednią wersję grafiki.
Jak Android rozpoznaje warianty grafik dla różnych gęstości ekranu?
Android używa katalogów zasobów z kwalifikatorami gęstości, np. `drawable-hdpi`, `drawable-xhdpi`, `drawable-xxhdpi`. Pliki zwykle mają tę samą nazwę, ale znajdują się w różnych folderach.
Czym różni się podejście iOS od Androida przy obsłudze grafik ekranowych?
W iOS wariant określa się najczęściej sufiksem w nazwie pliku, np. `@2x`. W Androidzie wariant określa katalog zasobów, np. `drawable-xhdpi`.
Dlaczego odpowiedź z katalogami 32ppi, 64ppi, 96ppi jest niepoprawna?
Android nie używa takich nazw katalogów dla wariantów grafik. Poprawne są katalogi z kwalifikatorami typu `mdpi`, `hdpi`, `xhdpi`, `xxhdpi`.
Co oznacza `@3x` w nazwie pliku grafiki dla iOS?
Oznacza wersję grafiki przygotowaną w trzykrotnie większej skali względem wariantu podstawowego. Jest używana na ekranach o bardzo wysokiej gęstości pikseli.
Czy w Androidzie należy zmieniać nazwy plików graficznych dla różnych gęstości?
Zwykle nie. Nazwa pliku pozostaje taka sama, a różne wersje umieszcza się w odpowiednich katalogach `drawable-*dpi`.