Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 8 kwietnia 2026 14:07
  • Data zakończenia: 8 kwietnia 2026 14:16

Egzamin niezdany

Wynik: 8/40 punktów (20,0%)

Wymagane minimum: 20 punktów (50%)

Udostępnij swój wynik
Szczegółowe wyniki:
Pytanie 1

Aby poprawnie skomentować linię kodu w języku JavaScript, należy po znakach // wprowadzić komentarz x = Math.max(a,b,c); //

A. nieprawidłowe dane
B. w zmiennej x minimalna wartość ze zmiennych a, b, c
C. wybór wartości maksymalnej spośród zmiennych a, b oraz c
D. w zmiennej x maksymalna wartość ze zmiennych a, b, c
W analizowanych odpowiedziach znajdują się stwierdzenia, które nie oddają rzeczywistego działania funkcji wykorzystywanej w tej linii kodu. Stwierdzenie dotyczące wyboru losowej wartości ze zmiennych a, b i c jest błędne, ponieważ funkcja Math.max nie dokonuje wyboru losowego, ale precyzyjnie analizuje wartości i zwraca największą z nich. Takie myślenie może prowadzić do poważnych nieporozumień w kontekście programowania, gdzie deterministyczne wyniki są kluczowe. Inne z kolei stwierdzenie, że w zmiennej x znajduje się minimalna wartość ze zmiennych a, b, c, jest całkowicie sprzeczne z logiką funkcji Math.max, która z definicji nakazuje jej zwracać maksymalną, a nie minimalną wartość. Użytkownik, bazując na tym błędnym rozumowaniu, mógłby wprowadzić niepoprawne dane do dalszego przetwarzania. Natomiast ostatnia błędna odpowiedź sugerująca, że zmienna x zawiera maksymalną wartość bez uwzględnienia kontekstu, jest niepoprawna w tym sensie, że nie precyzuje, iż funkcja Math.max porównuje konkretnie wartości a, b i c. Aby uniknąć takich nieporozumień, ważne jest zrozumienie mechanizmu działania wbudowanych funkcji w JavaScript oraz ich zastosowania w praktyce.

Pytanie 2

W bazie danych sklepu internetowego, w tabeli klienci znajdują się m.in. pola całkowite: punkty, liczbaZakupow oraz pole ostatnieZakupy o typie DATE. Klauzula WHERE dla zapytania wybierającego klientów, którzy mają ponad 3000 punktów lub dokonali zakupów więcej niż 100 razy, a ich ostatnie zakupy miały miejsce co najmniej w roku 2022, przyjmuje postać

A. WHERE punkty > 3000 AND liczbaZakupow > 100 AND ostatnieZakupy >= '2022-01-01'
B. WHERE (punkty > 3000 OR liczbaZakupow > 100) AND ostatnieZakupy >= '2022-01'
C. WHERE punkty > 3000 OR liczbaZakupow > 100 OR ostatnieZakupy >= '2022-01-01'
D. WHERE punkty > 3000 AND liczbaZakupow > 100 OR ostatnieZakupy >= '2022-01-01'
Odpowiedź ta jest poprawna, ponieważ zastosowano w niej właściwą logikę warunków w klauzuli WHERE. Aby wybrać klientów, którzy spełniają co najmniej jeden z dwóch pierwszych warunków (posiadają więcej niż 3000 punktów lub wykonali więcej niż 100 zakupów), używamy operatora OR. Z kolei ostatni warunek, dotyczący daty ostatnich zakupów, musi łączyć się z poprzednimi za pomocą operatora AND. Oznacza to, że aby klient został uwzględniony w wynikach, musi spełniać przynajmniej jeden z warunków dotyczących punktów lub liczby zakupów, a równocześnie musi mieć ostatnie zakupy dokonane w roku 2022 lub później. Takie podejście jest zgodne z dobrymi praktykami w SQL, w których operator OR jest wykorzystywany do łączenia warunków alternatywnych, a AND do warunków koniecznych. Na przykład, jeśli chcemy analizować dane klientów w kontekście programów lojalnościowych, takie zapytanie pozwoliłoby nam na wyodrębnienie najbardziej aktywnych klientów, co może być przydatne przy planowaniu kampanii marketingowych.

Pytanie 3

GRANT CREATE, ALTER ON sklep.* TO adam; Zakładając, że użytkownik adam nie dysponował wcześniej żadnymi uprawnieniami, to polecenie SQL przyzna mu prawa jedynie do

A. wstawiania oraz modyfikacji danych we wszystkich tabelach bazy sklep
B. tworzenia oraz modyfikacji struktury w tabeli sklep
C. tworzenia oraz modyfikacji struktury wszystkich tabel w bazie sklep
D. wstawiania oraz modyfikacji danych w tabeli sklep
Odpowiedzi, które sugerują, że użytkownik adam ma ograniczone prawa tylko do konkretnej tabeli lub tylko do wstawiania i zmiany danych, wynikają z mylnego zrozumienia mechanizmu przyznawania uprawnień w SQL. W kontekście opisanego polecenia, przyznawanie praw na poziomie tabeli (sklep.*) oznacza, że wszystkie tabele w bazie danych sklep są objęte tymi uprawnieniami. W praktyce, wstawianie oraz modyfikacja danych (DML) są różnymi operacjami od tworzenia i zmiany struktury tabel (DDL). Przyznanie uprawnień CREATE i ALTER jednoznacznie wskazuje na możliwość edytowania struktury bazy, a nie tylko na manipulację danymi. Wiele osób, które mogą mylić te dwa aspekty, może zakładać, że nadanie praw do konkretnej tabeli ogranicza się do operacji na danych, co jest mylnym podejściem. Mylne jest również ograniczanie praw do jednej tabeli, gdyż polecenie dotyczy wszystkich tabel w bazie. W związku z tym, aby poprawnie zarządzać uprawnieniami w bazie danych, należy zrozumieć różnice między uprawnieniami DDL i DML oraz ich zastosowanie w kontekście całej bazy danych, nie tylko pojedynczej tabeli.

Pytanie 4

Na przedstawionej grafice znajduje się struktura sekcji dla witryny internetowej. Przyjmując, że blok5 nie ma przypisanej szerokości, a bloki są określone w dokumencie HTML w kolejności ich numeracji, jak powinno wyglądać zdefiniowanie opływania?

Ilustracja do pytania
A. bloki 1, 2, 4 float: left; blok 3 float: right; blok 5 clear: both;
B. blok 1 float: left; bloki 2, 4 float: center; blok 3 float: right; blok 5 clear: both;
C. bloki 1, 2, 4 float: left; blok 3, 5 float: right;
D. bloki 1, 2, 3, 4 float: right; blok 5 clear: right;
Właściwe użycie float w CSS jest kluczowe do tworzenia układów stron. W pierwszej propozycji zastosowano float: left; dla bloków 1, 2, 4 oraz float: right; dla bloków 3 i 5, co jest niepoprawne, ponieważ blok 5 powinien być odseparowany od pozostałych poprzez clear: both;, aby zająć całą szerokość strony. W drugiej odpowiedzi, chociaż float: right; dla bloków 1, 2, 3, 4 może wydawać się poprawne dla niektórych stylów, blok 5 z clear: right; nie będzie działał, ponieważ nie uwzględnia float: left, które ma zastosowanie w układzie. Ostatnia odpowiedź używa float: center;, co jest nieprawidłowe, ponieważ w CSS nie istnieje taka właściwość. Elementy można centrować za pomocą innych metod, ale nie za pomocą float. Ponadto, przypisanie clear dla bloku 5 jest poprawne, ale pozostałe ustawienia float dla bloków są błędne i niezgodne z przedstawionym układem. Konsekwentne błędy często wynikają z braku zrozumienia, jak właściwości float i clear współdziałają w kontekście modelu pudełkowego w CSS.

Pytanie 5

W języku SQL polecenie INSERT INTO

A. wprowadza dane do tabeli.
B. dodaje pola do tabeli.
C. dodaje tabelę.
D. aktualizuje rekordy określoną wartością.
W SQL bardzo łatwo pomylić polecenia, bo wszystkie wyglądają dość podobnie, ale każde ma swoje wyraźne zadanie. INSERT INTO jest komendą typowo do pracy na danych, nie na strukturze bazy. Jeżeli ktoś myśli, że tym poleceniem „dodaje tabelę”, to miesza dwa różne obszary: definicję struktury i operacje na rekordach. Tworzenie nowej tabeli wykonuje się za pomocą CREATE TABLE, gdzie określamy nazwy kolumn, typy danych, klucze główne itd. INSERT zakłada, że tabela już istnieje i jest gotowa na przyjmowanie rekordów. Podobnie błędne jest kojarzenie INSERT z dodawaniem pól (kolumn) do tabeli. Modyfikacja struktury tabeli, czyli dokładanie nowych kolumn, zmiana typów, usuwanie kolumn, to domena polecenia ALTER TABLE. To jest tzw. DDL (Data Definition Language). Natomiast INSERT należy do DML (Data Manipulation Language), czyli tej części SQL, która operuje na danych: INSERT, UPDATE, DELETE, SELECT. Jeśli próbujemy INSERT-em „dodać pole”, to tak jakby śrubokrętem próbować wbijać gwóźdź – czasem coś się tam stanie, ale to w ogóle nie to narzędzie. Częstym nieporozumieniem jest też mylenie INSERT i UPDATE. UPDATE służy do aktualizacji istniejących rekordów, czyli zmiany wartości w wierszach, które już są w tabeli. Wykorzystuje się przy tym klauzulę WHERE, żeby wskazać, które rekordy mają zostać zmodyfikowane. INSERT natomiast zawsze tworzy nowy wiersz. Jeśli ktoś uważa, że INSERT „aktualizuje rekordy określoną wartością”, to tak naprawdę opisuje działanie UPDATE. W praktyce prowadzi to do błędów typu duplikowanie danych zamiast ich poprawiania. Moim zdaniem największy błąd myślowy polega na wrzucaniu wszystkiego, co „coś zmienia w bazie”, do jednego worka. Tymczasem w dobrze zaprojektowanym systemie bazodanowym wyraźnie rozdziela się operacje na schemacie (CREATE, ALTER, DROP) od operacji na danych (INSERT, UPDATE, DELETE). Zrozumienie tej różnicy jest kluczowe, żeby pisać poprawne i bezpieczne zapytania SQL. INSERT INTO zawsze oznacza: dodaj nowy rekord do istniejącej tabeli, z wartościami zgodnymi z jej strukturą i ograniczeniami.

Pytanie 6

Które z poniższych twierdzeń o definicji funkcji pokazanej w ramce jest prawdziwe?

function czytajImie(){
  var imie=null;
  do {
    imie=prompt("podaj imie: ");
    if (imie.length<3)
    alert("wprowadzony tekst jest niepoprawny");
  } while(imie.length<3);
}
A. Pętla zostanie uruchomiona tylko raz
B. Wczytanie tekstu zakończy się, gdy tekst będzie miał co najmniej 3 znaki
C. Tekst będzie wczytywany do czasu podania liczby większej niż 3
D. Funkcja zawiera pętlę, która powtarza się 3 razy
Błędne rozumienie działania pętli do-while może prowadzić do przekonania że pętla wykona się określoną ilość razy lub że zakończy się w momencie spełnienia innych warunków co jest typowym błędem wśród osób początkujących Pętla do-while w języku JavaScript wykonuje blok kodu przynajmniej raz a następnie sprawdza warunek kontynuacji co oznacza że nie jest ograniczona do stałej ilości iteracji jak mogłoby sugerować stwierdzenie o trzykrotnym powtórzeniu Warunek długości tekstu mniejszej niż 3 jest kluczowy dla jej działania i wymusza iterację aż do momentu gdy zostanie wprowadzony prawidłowy ciąg znaków co wyklucza możliwość że pętla wykona się tylko raz chyba że już za pierwszym razem zostanie wprowadzony tekst spełniający warunki Kolejnym nieporozumieniem może być błędne postrzeganie warunku jako związanego z wprowadzeniem liczby podczas gdy w rzeczywistości funkcja operuje na długości tekstu co jest częstym zagadnieniem przy walidacji danych tekstowych przy użyciu funkcji prompt Ważnym aspektem jest zrozumienie że pętle tego typu są używane tam gdzie wymagana jest walidacja danych wprowadzanego tekstu co jest praktyką szeroko akceptowaną w branży programistycznej z uwagi na konieczność zapewniania poprawności danych przed ich dalszym przetwarzaniem

Pytanie 7

Aby zmienić strukturę tabeli w bazie danych MySQL, należy użyć komendy

A. ALTER TABLE
B. UPDATE
C. GRANT
D. INSERT INTO
Wybór odpowiedzi 'INSERT INTO' jest błędny, ponieważ to polecenie służy do wstawiania nowych danych do tabeli, a nie do modyfikacji jej struktury. W praktyce, jeśli chcemy dodać nowy rekord do tabeli, użyjemy składni 'INSERT INTO tabela (kolumna1, kolumna2) VALUES (wartość1, wartość2);'. Z kolei 'UPDATE' również nie jest właściwym poleceniem w kontekście zmiany struktury tabeli, ponieważ to polecenie jest używane do modyfikacji istniejących danych w tabeli, a nie do zmiany jej budowy. Na przykład, aby zmienić wartość w kolumnie, użyjemy 'UPDATE tabela SET kolumna = nowa_wartość WHERE warunek;'. Dodatkowo, odpowiedź 'GRANT' jest nieodpowiednia, ponieważ to polecenie dotyczy przyznawania uprawnień do bazy danych, a nie zmiany jej struktury. Przyznawanie uprawnień jest kluczowe w kontekście bezpieczeństwa bazy danych, ale nie ma związku z modyfikowaniem struktury tabel. Typowymi błędami, które prowadzą do takich niepoprawnych wyborów, są pomylenie operacji na danych z operacjami na strukturze bazy danych oraz brak zrozumienia specyfiki poleceń SQL.

Pytanie 8

Jaki kolor reprezentuje zapis heksadecymalny #0000FF?

A. czerwony
B. niebieski
C. czarny
D. zielony
Kolor zapisany w notacji heksadecymalnej #0000FF oznacza niebieski. Notacja heksadecymalna używana jest w technologii webowej, szczególnie w CSS i HTML, do definiowania kolorów. W tej notacji każdy kolor składa się z sześciu znaków, gdzie pierwsze dwie cyfry reprezentują intensywność koloru czerwonego, drugie dwie zielonego, a ostatnie dwie niebieskiego. W przypadku #0000FF, '00' oznacza brak czerwonego, '00' brak zielonego, a 'FF' maksymalną intensywność niebieskiego. Dzięki temu systemowi można dokładnie określić kolory, co jest przydatne w projektowaniu stron internetowych oraz w grafice komputerowej. Zrozumienie tej notacji jest kluczowe dla każdego, kto pracuje w obszarze projektowania stron WWW, ponieważ pozwala na precyzyjne dostosowanie palet kolorów do estetyki projektu oraz zgodności z zasadami dostępności. Przykładowo, stosując odpowiednie kolory w notacji heksadecymalnej, możemy zapewnić lepszą czytelność tekstu na tle, co jest istotne w kontekście użyteczności stron internetowych.

Pytanie 9

W przedstawionej regule CSS ```h1 {color : blue}``` h1 reprezentuje

A. wartość
B. selektor
C. klasę
D. deklarację
Selekcja elementów w CSS jest naprawdę ważna, jeśli chodzi o tworzenie stron www. W regule CSS `h1 {color: blue}` mamy do czynienia z selektorem `h1`, który mówi nam, jak stylizować nagłówki pierwszego poziomu. Dzięki selekcji można fajnie dopasować wygląd strony do swoich potrzeb. No i w tym przypadku każdy nagłówek `h1` na stronie będzie miał niebieski kolor, co jest dość prostą i czytelną metodą. warto pamiętać, że CSS oferuje różne typy selektorów, jak klasy czy identyfikatory, a nie tylko tagi. W dużych projektach lepiej używać klasowych czy identyfikatorowych selektorów, bo daje to większą kontrolę nad stylizacją i łatwiejsze zarządzanie kodem.

Pytanie 10

Przedstawiono kod tabeli 3×2. Jaką modyfikację należy wprowadzić w drugim wierszu, aby tabela wyglądała jak na obrazie z niewidocznym wierszem?

<table>
  <tr>
    <td style="border: solid 1px;">Komórka 1</td>
    <td style="border: solid 1px;">Komórka 2</td>
  </tr>
  <tr>
    <td style="border: solid 1px;">Komórka 3</td>
    <td style="border: solid 1px;">Komórka 4</td>
  </tr>
  <tr>
    <td style="border: solid 1px;">Komórka 5</td>
    <td style="border: solid 1px;">Komórka 6</td>
  </tr>
</table>
Komórka 1Komórka 2
Komórka 3Komórka 4
Komórka 5Komórka 6
A. <tr style="visibility: hidden">
B. <tr style="clear: none">
C. <tr style="display: none">
D. <tr style="display: table-cell">
Właściwość CSS 'visibility: hidden' jest używana do ukrycia elementu, ale jednocześnie zachowuje ona jego miejsce w układzie strony. Jest to idealne dla sytuacji, kiedy chcemy ukryć konkretny element, ale nie chcemy wpływać na układ pozostałych elementów. W kontekście naszego pytania, jeśli chcielibyśmy ukryć drugi wiersz tabeli, ale nie chcemy, aby pozostałe wiersze zmieniały swoje położenie, 'visibility: hidden' jest idealnym rozwiązaniem. W przeciwnym razie, gdybyśmy użyli 'display: none', wiersz zostałby całkowicie usunięty z układu strony, a pozostałe wiersze przesunęłyby się do góry, aby zapełnić puste miejsce. W praktyce, właściwość 'visibility: hidden' jest często używana w połączeniu z JavaScript do tworzenia efektów 'hide/show', gdzie ukryte elementy mogą być później odkrywane bez wpływu na układ strony.

Pytanie 11

Aby zdefiniować pole w klasie, do którego dostęp mają wyłącznie metody tej klasy, a które nie jest dostępne dla klas dziedziczących, powinno się zastosować kwalifikator dostępu

A. publiczny.
B. prywatny.
C. opublikowany.
D. chroniony.
Wybór innych kwalifikatorów dostępu, takich jak 'public', 'protected' czy 'published', prowadzi do wprowadzenia istotnych luk w zakresie bezpieczeństwa i kontroli dostępu w strukturze klasy. Kiedy zmienimy pole na 'public', staje się ono dostępne w całej aplikacji, co może prowadzić do niekontrolowanych modyfikacji i błędów, gdy inne klasy zaczynają bezpośrednio modyfikować stan obiektu, co narusza zasady enkapsulacji. Umożliwienie dostępu do pól poprzez 'protected' pozwala klasom potomnym na modyfikowanie tych pól, co jest sprzeczne z zamiarem zabezpieczenia danych. Z kolei 'published' jest terminem używanym w niektórych językach programowania, ale jest to termin nieprecyzyjny i różnie interpretowany, co może wprowadzać zamieszanie. W oparciu o dobre praktyki programistyczne, kluczowym jest, aby zastanowić się nad dostępem do pól w kontekście całego projektu oraz zrozumieć, że niewłaściwe zarządzanie dostępem może prowadzić do nieprzewidzianych błędów, trudności w utrzymaniu kodu oraz naruszenia integralności danych. Dlatego tak ważne jest, aby zawsze wybierać odpowiedni kwalifikator dostępu, mając na uwadze zasady projektowania obiektowego i odpowiednią ochronę danych.

Pytanie 12

W języku JavaScript zdefiniowano funkcję potega. Funkcja ta

function potega(a, b = 2) { ... return wynik; }
A. może być wywołana z jedną wartością
B. nie przyjmuje żadnych argumentów
C. wymaga podania dwóch argumentów przy wywołaniu
D. nie zwraca wartości
W JavaScript funkcja może przyjmować parametry, zwracać wartości i być wywoływana z różną liczbą argumentów. Odpowiedź, że funkcja potega nie przyjmuje parametrów, jest nieprawidłowa. W kodzie widzimy, że przyjmuje dwa parametry (a, b), z czego drugi ma wartość domyślną. Funkcja w JavaScript może zwracać wartość poprzez instrukcję return, co jest standardową praktyką w celu uzyskania wyniku operacji. Zatem stwierdzenie, że nie zwraca żadnej wartości, jest błędne. W kodzie widoczna jest instrukcja return, co oznacza, że funkcja zwraca wynik. Koncepcja, że funkcja wymaga podania dwóch parametrów przy wywołaniu, również jest błędna, ponieważ jeden z parametrów ma przypisaną wartość domyślną i może być pominięty podczas wywołania funkcji. Wartości domyślne w JavaScript pozwalają na bardziej elastyczne użycie funkcji, co jest ugruntowaną praktyką od czasu wprowadzenia standardu ES6, umożliwiając łatwe zarządzanie brakującymi argumentami bez komplikowania kodu.

Pytanie 13

Gdzie należy umieścić znacznik metajęzyka HTML?

A. pomiędzy znacznikami <body> ... </body>
B. pomiędzy znacznikami paragrafu
C. w sekcji nagłówkowej witryny internetowej
D. w dolnej części witryny internetowej
Znacznik metajęzyka HTML, czyli tag <meta>, jest kluczowym elementem w sekcji nagłówkowej (head) dokumentu HTML. To tutaj umieszczamy informacje dotyczące dokumentu, takie jak jego tytuł, opis, słowa kluczowe oraz dane dotyczące kodowania i viewportu. Na przykład, aby ustawić kodowanie znaków na UTF-8, używamy znacznika <meta charset="UTF-8">. Jest to zgodne z wytycznymi W3C i najlepszymi praktykami SEO, ponieważ odpowiednie metadane pomagają wyszukiwarkom w zrozumieniu treści witryny. Inny przykład to <meta name="viewport" content="width=device-width, initial-scale=1.0">, który zapewnia, że strona jest responsywna na urządzeniach mobilnych. Umieszczając te znaczniki w nagłówku, można poprawić zarówno użyteczność, jak i widoczność witryny w internecie.

Pytanie 14

Który zapis znacznika <meta> jest poprawny w kontekście użytych atrybutów?

A. <meta name = '!DOCTYPE'>
B. <meta background = blue>
C. <meta title = 'Strona dla hobbystów'>
D. <meta name = 'description' content = 'Masz jakieś hobby? To jest strona dla Ciebie!'>
Wszystkie inne podane odpowiedzi są niepoprawne z różnych powodów. Przede wszystkim, znacznik <meta background = blue> nie jest poprawny, ponieważ atrybut 'background' nie jest standardowym atrybutem dla znacznika <meta>. W znaczniki <meta> stosuje się atrybuty takie jak 'name', 'content' czy 'http-equiv', a nie atrybuty związane z CSS, które powinny być używane w tagach takich jak <style> lub bezpośrednio w atrybutach stylu HTML. Dodatkowo, zapis <meta name = "!DOCTYPE"> jest całkowicie błędny, ponieważ 'DOCTYPE' nie jest nazwą atrybutu, który można by użyć w znaczniku <meta>. 'DOCTYPE' jest deklaracją, która informuje przeglądarkę o wersji HTML używanej w dokumencie, a nie metadanymi. Wreszcie, zapis <meta title = "Strona dla hobbystów"> jest również niepoprawny, ponieważ 'title' nie jest atrybutem akceptowanym przez znacznik <meta>. Tytuł strony powinien być umieszczony w znaczniki <title>, który znajduje się w sekcji <head> dokumentu HTML. Te błędy pokazują, jak ważne jest przestrzeganie standardów i zrozumienie struktury HTML, aby skutecznie wykorzystywać znaczniki <meta> w optymalizacji stron internetowych.

Pytanie 15

Jakie polecenie należy zastosować, aby cofnąć uprawnienia przyznane użytkownikowi?

A. REVOKE
B. GRANT NO PRIVILEGES
C. DROP PRIVILEGES
D. REMOVE
Użycie poleceń DELETE, DELETE PRIVILEGES oraz GRANT NO PRIVILEGES w kontekście odbierania uprawnień użytkownikom w bazach danych jest mylące i nieprawidłowe. DELETE jest poleceniem służącym do usuwania danych z tabeli, a jego zastosowanie w kontekście uprawnień nie ma sensu. Użytkownicy często mylą DELETE z operacjami zarządzania uprawnieniami, co prowadzi do nieprawidłowego wnioskowania o tym, jak zarządzać dostępem do danych. DELETE PRIVILEGES również nie jest uznawane za standardowe polecenie w systemach baz danych, co może prowadzić do nieporozumień dotyczących przyznawania i odbierania uprawnień. Na koniec, GRANT NO PRIVILEGES może wydawać się logiczne, ale w rzeczywistości jest to niepoprawna konstrukcja — system zarządzania bazą danych nie rozumie tej komendy jako efektywnego sposobu na odebranie uprawnień, co czyni ją bezużyteczną. W związku z tym, aby skutecznie zarządzać uprawnieniami, ważne jest, aby znać właściwe polecenia i ich zastosowanie, aby unikać nieporozumień oraz błędów w zarządzaniu dostępem do danych.

Pytanie 16

Zestaw narzędzi oraz funkcji umożliwiający tworzenie aplikacji, który dodatkowo narzuca ramy wizualne aplikacji, jej strukturę oraz czasami wzór, według którego ma być stworzona aplikacja, to

A. middleware
B. framework
C. biblioteka
D. komponent
Biblioteka, komponent oraz middleware to pojęcia, które różnią się od frameworków zarówno pod względem funkcji, jak i sposobu wykorzystania w procesie tworzenia oprogramowania. Biblioteki to zestawy zdefiniowanych funkcji i procedur, które programista może wykorzystać w swoim projekcie, ale nie narzucają one struktury ani architektury aplikacji. Użytkownik biblioteki ma pełną kontrolę nad tym, jak i kiedy dany kod zostanie wykorzystany, co czyni ją bardziej elastyczną, ale także bardziej ryzykowną, gdyż łatwo można wprowadzić nieporządek w kodzie. Komponenty, z kolei, to niezależne moduły, które można wykorzystać w różnych miejscach aplikacji. Zazwyczaj są częścią większej architektury, ale same w sobie nie definiują szkieletu aplikacji. Middleware natomiast to oprogramowanie, które działa jako pośrednik w komunikacji między różnymi systemami lub aplikacjami. Jego główną funkcją jest zarządzanie danymi przesyłanymi pomiędzy aplikacjami, a nie ustalanie struktury samej aplikacji. W związku z tym, wybór frameworku jako odpowiedzi na postawione pytanie jest poprawny, ponieważ jedynie frameworki narzucają szkielet, strukturę i wzorce, które ułatwiają proces programowania.

Pytanie 17

W zamieszczonym przykładzie pseudoklasa hover sprawi, że styl pogrubiony będzie przypisany

a:hover { font-weight: bold; }
A. wszystkim odnośnikom nieodwiedzonym.
B. odnośnikowi, w momencie kiedy najechał na niego kursor myszy.
C. każdemu odnośnikowi niezależnie od aktualnego stanu.
D. wszystkim odnośnikom odwiedzonym.
Wybrane przez Ciebie odpowiedzi sugerują, że nie do końca rozumiesz działanie pseudoklas w CSS. Pseudoklasa :hover jest stosowana do elementów, na które najechał kursor myszy, a nie do wszystkich odnośników niezależnie od ich stanu. Przypisanie stylu do 'wszystkich odnośników odwiedzonych' lub 'wszystkich odnośników nieodwiedzonych' wymagałoby użycia pseudoklas :visited i :link. Pseudoklasy te służą do stylizacji odnośników w zależności od tego, czy użytkownik już na nie kiedyś kliknął, czy nie. Ważne jest zrozumienie, że różne pseudoklasy służą do stylizacji elementów w różnych stanach i kontekstach. W praktyce, zastosowanie niewłaściwej pseudoklasy może prowadzić do nieoczekiwanych wyników i błędów w działaniu strony. Dlatego zawsze warto dokładnie zrozumieć, jakie efekty przynosi użycie danej pseudoklasy.

Pytanie 18

W formularzu wartości z pola input o typie number zostały przypisane do zmiennej a, a następnie przetworzone w skrypcie JavaScript w sposób następujący: ```var x = parseInt(a);``` Jakiego typu będzie zmienna x?

A. zmiennoprzecinkowego
B. napisowego
C. Nan
D. liczbowego, całkowitego
Wybór niepoprawnych odpowiedzi wynika z nieporozumienia dotyczącego działania funkcji parseInt oraz typów danych w JavaScript. W pierwszej z niepoprawnych odpowiedzi, Nan oznacza 'Not a Number', który jest zwracany, gdy operacja konwersji na liczbę nie może zostać przeprowadzona. W kontekście zmiennej a, jeśli ta wartość jest poprawnym wejściem z pola input typu number, parseInt nie zwróci NaN, a raczej prawidłową liczbę całkowitą. Kolejna opcja opisuje typ napisowy, co jest sprzeczne z tym, co zapewnia funkcja parseInt, ponieważ zwraca ona wartość liczbową, a nie tekst. Wartości typu string mogą być konwertowane na liczby, ale samo pole input o typie number nie wprowadza napisów, a zatem nie tworzy sytuacji, w której wynik byłby typu string. Ostatnia z błędnych odpowiedzi nawiązuje do zmiennoprzecinkowego typu danych. Chociaż JavaScript obsługuje liczby zmiennoprzecinkowe, funkcja parseInt celowo konwertuje na wartość całkowitą, co wyklucza możliwość uzyskania zmiennoprzecinkowego wyniku. Zrozumienie tych różnic jest istotne dla efektywnego programowania w JavaScript i unikania typowych pułapek związanych z konwersją typów.

Pytanie 19

Co można powiedzieć o wyświetlonym przez witrynę tekście "test kolorów"?

<p id="p1" style="color:blue;">test kolorów</p>
<button type="button"
  onclick="document.getElementById('p1').style.color='red'">
  test</button>
A. Wciskanie przycisku test sprawia, że kolor tekstu jest na przemian niebieski i czerwony.
B. Zaraz po załadowaniu witryny kolor tekstu jest czerwony.
C. Po wciśnięciu przycisku test kolor tekstu jest czerwony.
D. Po wciśnięciu przycisku test kolor tekstu jest niebieski.
Niestety, żadne z pozostałych wyborów nie są trafne, bo nie oddają działania kodu HTML i JavaScript, który widzisz na zdjęciu. Na przykład, jeśli ktoś myśli, że kolor zmienia się na niebieski po naciśnięciu przycisku, to jest w błędzie, bo kod wyraźnie pokazuje, że kolor zmienia się na czerwony. Z kolei stwierdzenie, że kolor zmienia się na przemian między czerwonym a niebieskim, też jest błędne, ponieważ w kodzie nie ma żadnej pętli ani warunku, który by to umożliwił. I jeszcze, mówienie, że kolor tekstu jest czerwony po załadowaniu strony, to też fałsz, bo początkowo tekst jest niebieski. Może te pomyłki wynikają z niezrozumienia jak działają skrypty JavaScript lub z pominięcia niektórych elementów w analizie.

Pytanie 20

Który efekt został zaprezentowany na filmie?

A. Zwiększenie ostrości zdjęcia.
B. Zmniejszenie kontrastu zdjęcia.
C. Przenikanie zdjęć.
D. Zmiana jasności zdjęć.
W tym zadaniu łatwo pomylić kilka różnych rodzajów operacji na obrazie, bo wszystkie jakoś „zmieniają wygląd zdjęcia”, ale działają zupełnie inaczej. Efekt pokazany na filmie to przenikanie dwóch zdjęć w czasie, czyli animowane przejście między jednym obrazem a drugim. Kluczowa cecha: widzimy jednocześnie dwa zdjęcia, jedno stopniowo zanika, a drugie stopniowo się pojawia. To nie jest typowa operacja edycyjna na pojedynczym pliku graficznym, tylko efekt animacyjny, często wykorzystywany w pokazach slajdów, sliderach na stronach WWW i w montażu wideo. Zmiana jasności zdjęć to zupełnie inny rodzaj przetwarzania. Jasność modyfikuje poziom luminancji całego obrazu lub jego fragmentów – obraz staje się ciemniejszy albo jaśniejszy, ale dalej jest to to samo zdjęcie. Nie pojawia się nowe, drugie zdjęcie, nie ma nakładania dwóch kadrów. W programach do grafiki mamy to jako „Brightness”, „Exposure” czy „Levels”. Jeśli na filmie widać, że jeden obraz przechodzi płynnie w inny, to nie jest korekta jasności, tylko przejście między dwiema warstwami. Podobnie z ostrością – zwiększenie ostrości polega na podbiciu kontrastu na krawędziach, żeby szczegóły wyglądały wyraźniej. W praktyce używa się filtrów typu Unsharp Mask, Smart Sharpen albo algorytmów wyostrzania w czasie rzeczywistym. Obraz przed i po wyostrzeniu to ciągle ta sama klatka, tylko z innym przetworzeniem detali, nie ma efektu zanikania jednego zdjęcia i pojawiania się drugiego. Zmniejszenie kontrastu to kolejna korekta globalna, która spłaszcza różnice między jasnymi a ciemnymi partiami obrazu. Zdjęcie robi się bardziej „szare”, mniej dynamiczne. Znowu – cały czas pracujemy na jednym ujęciu, bez miksowania dwóch fotografii. Typowym błędem myślowym przy takich pytaniach jest to, że skoro coś się „zmienia w czasie”, to musi chodzić o jakąś regulację parametrów typu jasność czy kontrast. Tymczasem w efektach multimedialnych bardzo często operujemy na wielu warstwach – dwa obrazy, dwie klatki wideo – i animujemy ich wzajemną przezroczystość. Właśnie to jest esencją przenikania zdjęć i odróżnia je od zwykłych korekt obrazu.

Pytanie 21

Poziom izolacji transakcji Repeatable Read (tryb powtarzalnego odczytu) używany przez MS SQL jest związany z problemem

A. brudnych odczytów
B. odczytów widm
C. utraty aktualizacji
D. niepowtarzalnych odczytów
Wszystkie pozostałe odpowiedzi dotyczą problemów, które nie są bezpośrednio związane z poziomem izolacji Repeatable Read. Utrata aktualizacji występuje, gdy dwie transakcje odczytują ten sam wiersz i obie próbują go zaktualizować. Problem ten jest bardziej związany z poziomem izolacji Read Committed, gdzie jedno z odczytów może nadpisać zmiany dokonane przez drugie, co prowadzi do utraty ważnych informacji. Brudne odczyty z kolei występują, gdy transakcja odczytuje dane zmienione przez inną transakcję, która jeszcze nie została zatwierdzona. Ten problem jest charakterystyczny dla najniższego poziomu izolacji, czyli Read Uncommitted, gdzie brak jakiejkolwiek kontroli nad odczytem danych skutkuje niebezpieczeństwem uzyskania nieaktualnych lub niepoprawnych informacji. Niepowtarzalne odczyty natomiast to sytuacje, w których iż dane mogą zmieniać się pomiędzy dwoma odczytami w tej samej transakcji. Problem ten występuje w poziomie Read Committed, gdzie zmiany dokonane przez inne transakcje mogą być widoczne dla aktualnej transakcji, co prowadzi do niespójności w wynikach. Tak więc, choć wszystkie wymienione zjawiska są ważnymi problemami w zarządzaniu transakcjami, tylko odczyty widm są specyficznie związane z poziomem izolacji Repeatable Read.

Pytanie 22

Dodanie ograniczenia klucza obcego w taki sposób, aby kolumna Klasy_id z tabeli Uczniowie była powiązana z kolumną id w tabeli Klasy zostanie wykonane przy użyciu polecenia

Ilustracja do pytania
A. ALTER TABLE Uczniowie ADD CONSTRAINT FKKlasy FOREIGN KEY(Klasy_id) REFERENCES Klasy(id);
B. ALTER TABLE Uczniowie DROP CONSTRAINT FKKlasy FOREIGN KEY(Klasy_id) REFERENCES Klasy(id);
C. ALTER TABLE Uczniowie DROP FOREIGN KEY FKKlasy FOREIGN KEY(Klasy_id) REFERENCES Klasy(id);
D. ALTER TABLE Uczniowie ADD FOREIGN KEY FKKlasy FOREIGN KEY(Klasy_id) REFERENCES Klasy(id);
W poleceniach dotyczących kluczy obcych bardzo łatwo pomylić operacje `ADD` i `DROP` oraz prawidłową składnię dla poszczególnych dialektów SQL. W przedstawionych błędnych odpowiedziach pojawia się kilka typowych nieporozumień. Część z nich próbuje używać słowa kluczowego `DROP`, które służy do usuwania istniejącego ograniczenia, a nie do jego tworzenia. Jeżeli naszym celem jest dopiero dodanie relacji między tabelą `Uczniowie` a tabelą `Klasy`, to użycie `DROP CONSTRAINT` albo `DROP FOREIGN KEY` jest po prostu logicznie sprzeczne z zadaniem – takie polecenia mogłyby mieć sens tylko wtedy, gdy klucz obcy `FKKlasy` już istnieje i chcemy go zlikwidować. W praktyce takie pomyłki wynikają z mylenia dwóch kroków: projektowania schematu (gdzie klucze dopiero dodajemy) z refaktoryzacją istniejącej bazy (gdzie często coś usuwamy i tworzymy na nowo). Kolejna sprawa to składnia `ADD FOREIGN KEY FKKlasy FOREIGN KEY(...)`. W standardowych systemach zarządzania bazą danych najpierw podaje się `ADD CONSTRAINT nazwa`, a dopiero później słowo `FOREIGN KEY` wraz z listą kolumn. Wpychanie nazwy ograniczenia między `ADD FOREIGN KEY` a definicję kolumn nie jest zgodne z zasadami składni SQL i po prostu nie zadziała. Moim zdaniem to efekt mieszania różnych przykładów z internetu, gdzie w jednych pokazuje się nazwane ograniczenia (`ADD CONSTRAINT ...`), a w innych anonimowe (`ADD FOREIGN KEY (...) REFERENCES ...`), bez nazwy. Dodatkowo, używanie w jednym poleceniu jednocześnie `DROP` i całej definicji `FOREIGN KEY(Klasy_id) REFERENCES Klasy(id)` jest nielogiczne: przy usuwaniu ograniczenia podajemy wyłącznie jego nazwę, bo silnik bazy już zna szczegóły definicji i nie trzeba ich powtarzać. W poprawnym podejściu zawsze zadajemy sobie pytanie: czy ja chcę coś dodać, czy usunąć, i czy składnia, której używam, odpowiada dokumentacji konkretnego systemu (np. SQL Server, MySQL, PostgreSQL). Stosowanie czytelnej, udokumentowanej formy `ALTER TABLE ... ADD CONSTRAINT ... FOREIGN KEY ... REFERENCES ...` jest zgodne z dobrymi praktykami i oszczędza sporo nerwów przy późniejszej administracji oraz migracjach schematu.

Pytanie 23

O czym informuje przeglądarkę internetową zapis <!DOCTYPE html>?

A. Dokument został zapisany w języku HTML 5.
B. W dokumencie wszystkie tagi są zapisane wielkimi literami.
C. Dokument jest zapisany w wersji HTML 4.
D. W dokumencie każda etykieta musi być zamknięta, nawet te samozamykające.
Wszystkie zaproponowane odpowiedzi poza tą właściwą opierają się na nieaktualnych lub błędnych założeniach dotyczących HTML. Kiedy mówimy o dokumentach HTML, istotnym elementem jest zrozumienie znaczenia deklaracji <!DOCTYPE html>. Odpowiedź sugerująca, że dokument powinien być zapisany w wielkich literach, jest nieuzasadniona, ponieważ HTML jest językiem, który nie rozróżnia wielkości liter, a stosowanie wielkich liter nie wpływa na interpretację kodu przez przeglądarki. Z kolei twierdzenie, że dokument został zapisany w HTML 4, jest przestarzałe, ponieważ HTML5 jest następcom HTML 4.1 i jego wprowadzenie oznacza znaczne zmiany w architekturze i możliwościach języka. Dodatkowo, koncepcja, że każdy znacznik musi być zamykany, również nie jest precyzyjna; HTML5 wprowadza elementy samozamykające się, takie jak <img> czy <br>, które nie wymagają zamykania, co różni się od wcześniejszych standardów. Zrozumienie tych podstawowych koncepcji jest kluczowe dla tworzenia nowoczesnych stron internetowych, a nieprawidłowe interpretacje mogą prowadzić do błędów w kodowaniu i niezgodności w wyświetlaniu treści.

Pytanie 24

Którą kwerendę należy wykonać, aby zaktualizować wszystkim rekordom z tabeli pracownicy wartość w kolumnie plec na K, przyjmując na potrzeby zadania, że każde imię żeńskie kończy się literą a?

A. ALTER TABLE pracownicy SET plec='K' WHERE imie='%a';
B. UPDATE pracownicy SET plec='K' WHERE imie LIKE '%a';
C. ALTER TABLE pracownicy SET plec='K' WHERE imie LIKE '%a';
D. UPDATE pracownicy SET plec='K' WHERE imie='%a';
W tym zadaniu łatwo się potknąć na dwóch rzeczach: pomyleniu operacji na strukturze tabeli z operacjami na danych oraz na nieprawidłowym użyciu wzorca tekstowego. W SQL istnieje dość wyraźny podział na instrukcje służące do definiowania struktury bazy (DDL) oraz te, które manipulują rekordami (DML). ALTER TABLE należy do tej pierwszej grupy. Używa się go do dodawania kolumn, zmiany typu danych, ustawiania kluczy obcych, czasem indeksów. Nie ma on mechanizmu typu SET kolumna='wartość' z warunkiem WHERE, który modyfikuje poszczególne wiersze. Próba napisania ALTER TABLE ... SET plec='K' WHERE imie LIKE '%a' po prostu nie jest zgodna ze składnią SQL i nie zadziała w żadnym normalnym systemie bazodanowym. Drugi typ błędu dotyczy użycia WHERE imie='%a'. W wielu językach programowania znak % kojarzy się z operacjami na łańcuchach albo z formatowaniem, ale w czystym SQL porównanie z operatorem = oznacza ścisłą równość, bez żadnych wildcardów. Wyrażenie imie = '%a' oznacza: imie ma być dokładnie dwuznakowym ciągiem składającym się z procenta i litery „a”. Żadne „dowolne znaki przed a” się tu nie pojawiają. Do dopasowywania wzorców tekstowych służy operator LIKE, a dopiero przy LIKE znaczek % ma specjalne znaczenie – „dowolny ciąg znaków”. To jest bardzo typowe nieporozumienie: ktoś pamięta, że w LIKE używa się % i _ jako wildcardów, i odruchowo wrzuca % także przy zwykłym =. Z mojego doświadczenia wynika, że dobrym nawykiem jest rozdzielenie w głowie: UPDATE + SET + WHERE – do zmiany danych; ALTER TABLE – tylko do zmian struktury. A przy wyszukiwaniu tekstów: jeśli chcę sztywne porównanie, używam =, jeśli szukam po fragmencie, używam LIKE z % (wieloznak) lub _ (pojedynczy znak). W praktyce webowej błędne użycie tych konstrukcji może prowadzić do sytuacji, że kwerenda nic nie zwraca albo nie aktualizuje żadnego rekordu, a programista długo szuka błędu np. po stronie PHP czy JavaScript, zamiast zacząć od samego SQL-a. Warto też pamiętać, że aktualizacje bez poprawnego WHERE są niebezpieczne, bo mogą zmienić wszystkie rekordy w tabeli, więc warunek oparty na właściwie użytym LIKE jest kluczowy zarówno dla poprawności, jak i bezpieczeństwa danych.

Pytanie 25

Używa się zapytania z klauzulą JOIN, aby

A. uzyskać dane z dwóch tabel, które są ze sobą powiązane
B. wykonać funkcję agregującą
C. określić klucz obcy dla tabeli
D. otrzymać wynik tylko z jednej tabeli
Zastosowanie klauzuli JOIN w zapytaniach SQL jest często mylone z innymi operacjami na tabelach, co prowadzi do nieporozumień i błędnych koncepcji. Definiowanie klucza obcego dla tabeli jest procesem, który nie ma bezpośredniego związku z samym zapytaniem. Klucz obcy, który służy do utrzymania integralności referencyjnej między tabelami, jest konfigurowany podczas tworzenia lub modyfikacji struktury bazy danych, a nie podczas pisania zapytań. Ponadto, wywoływanie funkcji agregujących, takich jak SUM czy COUNT, może być przeprowadzane niezależnie od tego, czy w zapytaniu wykorzystujemy JOIN. Funkcje te mogą działać na danych z jednej tabeli, co jest sprzeczne z błędnym stwierdzeniem, że JOIN jest niezbędny do ich wywołania. Ostatnim nieporozumieniem jest idea, że można otrzymać wyniki tylko z jednej tabeli. W praktyce, wiele zapytań wymaga współpracy między tabelami, aby uzyskać pełniejszy kontekst danych. Dobrą praktyką w projektowaniu baz danych jest jednak unikanie nieefektywnego łączenia tabel, jeżeli nie jest to konieczne, co może prowadzić do nieoptymalnej wydajności zapytań. Znajomość różnicy między operacjami na poziomie struktury bazy danych a zapytaniami pozwala na lepsze projektowanie i wykorzystanie systemów bazodanowych.

Pytanie 26

W systemie MySQL trzeba użyć polecenia REVOKE, aby użytkownikowi anna cofnąć możliwość wprowadzania zmian jedynie w definicji struktury bazy danych. Odpowiednia komenda do odebrania tych uprawnień ma postać

A. REVOKE CREATE UPDATE DROP ON tabela1 FROM 'anna'@'localhost'
B. REVOKE ALL ON tabela1 FROM 'anna'@'locaihost'
C. REVOKE CREATE INSERT DELETE ON tabela1 FROM 'anna'@'localhost'
D. REVOKE CREATE ALTER DROP ON tabela1 FROM 'anna'@'localhost'
W analizie odpowiedzi, które są niepoprawne, kluczowe jest zrozumienie, jakie uprawnienia są odbierane i dlaczego to ma znaczenie. Odpowiedzi takie jak 'REVOKE ALL ON tabela1 FROM 'anna'@'localhost'' są niewłaściwe, ponieważ polecenie REVOKE ALL odbiera wszystkie prawa użytkownikowi, co może być zbyt drastycznym krokiem. W kontekście zarządzania uprawnieniami, ważne jest, aby podejść do tego z miarą i precyzją, a nie stosować ogólne odbieranie wszystkich praw. Ponadto, odpowiedzi, które obejmują niewłaściwe kombinacje uprawnień, takie jak 'REVOKE CREATE UPDATE DROP ON tabela1 FROM 'anna'@'localhost'', są również błędne. Odbieranie prawa UPDATE nie jest zgodne z celem pytania, które dotyczy jedynie strukturalnych zmian, a nie wprowadzania danych. Właściwe podejście do konfiguracji uprawnień powinno koncentrować się na ograniczaniu dostępu użytkowników tylko tam, gdzie jest to absolutnie konieczne, a nie na eliminacji ich zdolności do pracy z danymi w ogóle. Użytkownicy często popełniają błąd myślowy, myśląc, że odebranie zbyt wielu uprawnień jest rozwiązaniem problemu bezpieczeństwa, podczas gdy w rzeczywistości może to prowadzić do zablokowania niezbędnych operacji, co zagraża efektywności pracy organizacji.

Pytanie 27

Pole insert_id zdefiniowane w bibliotece MySQLi języka PHP może być wykorzystane do

A. uzyskania id ostatnio dodanego wiersza
B. uzyskania pierwszego dostępnego indeksu bazy, tak, aby można było pod nim wstawić nowe dane
C. otrzymania kodu błędu, gdy wstawienie wiersza się nie powiodło
D. pobrania najwyższego indeksu bazy, aby po jego zwiększeniu wstawić pod niego dane
Każda z niepoprawnych odpowiedzi zawiera błędne założenia dotyczące funkcji insert_id w kontekście MySQLi. Odpowiedź, która sugeruje, że pole to może być użyte do otrzymania kodu błędu w przypadku niepowodzenia procesu wstawiania wiersza, jest myląca, ponieważ kod błędu jest uzyskiwany za pomocą innych mechanizmów, takich jak mysqli_errno() oraz mysqli_error(). Takie podejście może prowadzić do nieporozumień w zarządzaniu błędami w bazach danych, co jest istotnym aspektem programowania. Ponadto, pomysł, że insert_id może być używany do pobrania najwyższego indeksu bazy, aby po jego inkrementacji wstawić nowe dane jest nieprawidłowy, ponieważ insert_id nie działa w ten sposób; identyfikator jest automatycznie generowany przez bazę danych w momencie dodawania rekordu. Takie podejście może prowadzić do trudności w synchronizacji danych i jest niezgodne z zasadami dobrego projektowania baz danych. Również koncepcja pozyskiwania pierwszego wolnego indeksu jest błędna; w praktyce nie jest zalecane ręczne zarządzanie indeksami, ponieważ może to prowadzić do konfliktów i naruszenia integralności danych. MySQL automatycznie zarządza numerami ID, co jest bardziej efektywne i zmniejsza ryzyko błędów. Wreszcie, stosując te nieprawidłowe koncepcje, programiści mogą napotkać trudności w utrzymaniu kodu i jego rozwoju, co może zwiększyć złożoność aplikacji.

Pytanie 28

Jak powinna wyglądać odpowiednia sekwencja procesów przetwarzania dźwięku z analogowego na cyfrowy?

A. kwantyzacja, próbkowanie, kodowanie
B. próbkowanie, kodowanie, kwantyzacja
C. próbkowanie, kwantyzacja, kodowanie
D. kwantyzacja, kodowanie, próbkowanie
Wybór niepoprawnych odpowiedzi pokazuje, że pewnie nie do końca zrozumiałeś, jak te procesy przetwarzania dźwięku powinny przebiegać. Pierwszy błąd to pominięcie jednego z kluczowych kroków, co może mylić, bo nie jest jasne, jak właściwie przekształcamy sygnał analogowy w cyfrowy. Jeśli byś kodował dane przed kwantyzacją, to mogłoby to zniekształcić informacje przez brak zaokrągleń, co sprawiłoby, że dane nie oddają oryginału. Z kolei, jeśli nie rozumiesz, że kwantyzacja ma być po próbkowaniu, to może się wydawać, że dźwięk przechodzi w formę cyfrową w dziwny sposób. W efekcie, może się zdarzyć, że nie oddasz właściwego zakresu dynamiki, co znacznie pogorszy jakość dźwięku. Może być tak, że dźwięk będzie zniekształcony albo straci ważne szczegóły, przez co będzie trudny do słuchania. Fajnie by było, żebyś lepiej zrozumiał te procesy, bo są mega ważne dla każdego, kto działa w inżynierii dźwięku lub produkcji muzycznej.

Pytanie 29

W języku JavaScript zdefiniowano obiekt ```obiekt = { q: 1, w: 2, e: 3, r: 4 };``` W jaki sposób można uzyskać wartość właściwości ```w```?

A. obiekt.w
B. obiekt->w
C. obiekt:w
D. obiekt::w
Niepoprawne odpowiedzi wskazują na nieporozumienia dotyczące składni języka JavaScript. Użycie obiekt:w sugeruje, że istnieje jakiś operator dostępu do właściwości za pomocą dwukropka, co jest niezgodne z zasadami składniowymi JavaScript. W rzeczywistości dwukropek w tym kontekście nie ma znaczenia i jest błędnie interpretowany. Podobnie, obiekt::w użytkuje podwójny dwukropek, co z kolei jest składnią nieznaną w JavaScript i nie ma zastosowania w kontekście odwoływania się do właściwości obiektu. Z kolei obiekt->w sugeruje, że programista próbuje skorzystać z operatora strzałki, który występuje w innych językach programowania, takich jak C++ czy PHP, ale nie jest on używany w JavaScript. W JavaScript stosuje się wyłącznie notację kropkową lub nawiasową do odwoływania się do właściwości obiektów. Chociaż różne języki programowania mogą mieć swoje własne konwencje dotyczące operatorów dostępu do właściwości, JavaScript pozostaje konsekwentny w swojej składni, co ułatwia zrozumienie i naukę. Ważne jest, aby programiści zapoznali się z podstawami składni JavaScript, aby unikać takich błędów i poprawnie wykorzystywać możliwości obiektowego modelu tego języka.

Pytanie 30

Na listingu kodu JavaScript w wykropkowanej części definicji obiektu osoba należy wpisać kod, który prawidłowo obsłuży instrukcję osoba.j = "PL"; Który to będzie kod?

 var osoba = {
    imie: "Jan",
    jezyk: "EN",
    set j(nazwa) {  ...  }
};
A. this.j = nazwa;
B. return this.jezyk;
C. return this.j;
D. this.jezyk = nazwa;
Niepoprawne odpowiedzi w tym pytaniu wynikają z niezrozumienia roli setterów i sposób, w jaki są one używane do zarządzania stanem obiektu w JavaScript. Odpowiedź 'this.j = nazwa;' jest nieprawidłowa, ponieważ próbuje przypisać wartość bezpośrednio do właściwości 'j', która nie istnieje w obiekcie 'osoba'. Z kolei 'return this.j;' i 'return this.jezyk;' nie są prawidłowe, ponieważ setter nie powinien zwracać wartości. Jego zadaniem jest ustawienie wartości, a nie jej zwrócenie. Zrozumienie roli setterów w zarządzaniu stanem obiektu jest kluczowe dla prawidłowego używania JavaScript. Setter powinien zawsze przypisywać wartość do właściwości obiektu, a nie próbować zwrócić wartość lub przypisać wartość do nieistniejącej właściwości.

Pytanie 31

Dostępna jest tabela ksiazki z kolumnami: tytul (typ tekstowy) oraz cena (typ liczbowy). W celu uzyskania z kwerendy SELECT jedynie tytułów, dla których cena jest mniejsza od 50 zł, należy użyć następującego zapisu:

A. SELECT ksiazki FROM tytul WHERE cena<'50 zł';
B. SELECT tytul FROM ksiazki WHERE cena<50;
C. SELECT tytul FROM ksiazki WHERE cena>'50 zł';
D. SELECT * FROM ksiazki WHERE cena<50;
Wybór niepoprawnej odpowiedzi jest wynikiem kilku typowych błędów w myśleniu związanych z konstrukcją zapytań SQL. Odpowiedź "SELECT * FROM ksiazki WHERE cena<50;" zwraca wszystkie kolumny z tabeli, co jest niezgodne z wymaganiem, które wskazywało na potrzebę zwrócenia jedynie tytułów książek. Użycie znaku '*' do pobierania wszystkich danych jest często niewłaściwe w kontekście optymalizacji, ponieważ może prowadzić do niepotrzebnego obciążenia zarówno bazy danych, jak i aplikacji klienckiej. Innym błędem jest odpowiedź "SELECT tytul FROM ksiazki WHERE cena>'50 zł';", która zawiera nieprawidłowy operator porównania '>', oraz niepoprawny zapis wartości liczbowej z jednostką walutową. W SQL nie używamy jednostek walutowych w porównaniach, co może prowadzić do nieprawidłowych wyników. Ponadto, odpowiedź "SELECT ksiazki FROM tytul WHERE cena<'50 zł';" zawiera błędną strukturę zapytania, gdzie błędnie użyto nazw kolumn oraz tabeli, co jest podstawowym błędem składniowym. Ważne jest, aby przy tworzeniu zapytań zwracać uwagę na logikę działania SQL oraz właściwą składnię, co pozwoli uniknąć typowych pułapek w procesie analizy danych.

Pytanie 32

Aby ustalić wysokość grafiki wyświetlanej na stronie internetowej, należy użyć właściwości CSS o nazwie

A. margin
B. height
C. padding
D. width
Wybór niewłaściwej odpowiedzi wskazuje na pomyłkę w rozumieniu podstawowych właściwości CSS. Właściwość 'padding' dotyczy przestrzeni wewnętrznej wokół zawartości elementu, co wpływa na jego estetykę, ale nie określa bezpośrednio jego wysokości. Z kolei 'margin' definiuje przestrzeń na zewnątrz elementu, co również nie ma wpływu na jego wewnętrzną wysokość. Istnienie obu tych właściwości może prowadzić do błędnego wniosku, że są one odpowiednie do kontrolowania wymiarów elementów, co jest nieprawidłowe. Właściwości te służą do zarządzania układem i odstępami, a nie do bezpośredniego określania wysokości. Wybór 'width' wskazuje na nieporozumienie, ponieważ chociaż odnosi się do szerokości, nie ma związku z wysokością, co może prowadzić do nieefektywnego projektowania. Zrozumienie różnicy między tymi właściwościami jest kluczowe dla skutecznego stosowania CSS w praktyce. W projektowaniu stron internetowych ważne jest, aby właściwie dobierać właściwości, aby uzyskać oczekiwany efekt wizualny. Właściwe użycie 'height' w kontekście innych właściwości, takich jak 'width', może uczynić układ bardziej spójnym i responsywnym, co jest istotne w nowoczesnym web designie. Wszelkie błędy w interpretacji tych właściwości mogą prowadzić do niechcianych efektów wizualnych i użyteczności stron.

Pytanie 33

O obiekcie zdefiniowanym w języku JavaScript można stwierdzić, że zawiera

var obiekt1 = {
  x: 0,
  y: 0,
  wsp: functon() { … }
}
A. trzy właściwości
B. dwie właściwości oraz jedną metodę
C. dwie metody oraz jedną właściwość
D. trzy metody
Analizując niepoprawne odpowiedzi, można zauważyć typowe błędy w zrozumieniu struktury obiektów w JavaScript. Odpowiedzi sugerujące, że obiekt ma trzy właściwości lub trzy metody, zbudowane są na błędnych założeniach dotyczących struktury obiektu. Obiekt `obiekt1` wyraźnie definiuje tylko dwie właściwości: `x` i `y`, co jest kluczowe dla zrozumienia, czym są właściwości w kontekście obiektów. Właściwości są to dane przechowywane w obiekcie, podczas gdy metody to funkcje przynależące do obiektu. Stwierdzenie, że obiekt ma trzy metody, błędnie interpretuje funkcję `wsp` jako wiele metod, podczas gdy w rzeczywistości jest to tylko jedna funkcja, a więc jedna metoda. Takie nieporozumienia mogą prowadzić do trudności w projektowaniu obiektów oraz ich późniejszym użytkowaniu. W praktyce, umiejętność prawidłowego identyfikowania właściwości i metod obiektów jest istotna w kontekście programowania obiektowego, które jest kluczowym paradygmatem w JavaScript. Niezrozumienie tych podstaw może skutkować błędami w kodzie, które są trudne do zdiagnozowania, zwłaszcza w większych projektach, gdzie struktura obiektów może być złożona. W związku z tym, zaleca się dokładne zapoznanie się z zasadami definiowania obiektów oraz ich składników, aby uniknąć takich nieporozumień w przyszłości.

Pytanie 34

Strona internetowa została napisana w języku XHTML. Który z poniższych kodów przedstawia implementację zamieszczonego fragmentu strony, przy założeniu, że nie zdefiniowano żadnych stylów CSS?

Ilustracja do pytania
A. <b>Początki HTML</b><p>W 1980 fizyk <b>Tim Berners-Lee</b>, pracownik <i>CERN</i>,<hr /> stworzył<b>prototyp hipertekstowego systemu informacyjnego - <i>ENQUIRE</i></b></p>
B. <h1>Początki HTML</h1><p>W 1980 fizyk <b>Tim Berners-Lee</b>, pracownik <i>CERN</i>,<br /> stworzył<i>prototyp hipertekstowego systemu informacyjnego - <b>ENQUIRE</b></i></p>
C. <h1>Początki HTML</h1><p>W 1980 fizyk <b>Tim Berners-Lee</b>, pracownik <i>CERN</i>,<br /> stworzył<b>prototyp hipertekstowego systemu informacyjnego - <i>ENQUIRE</i></b></p>
D. <b>Początki HTML</b><p>W 1980 fizyk <b>Tim Berners-Lee</b>, pracownik <i>CERN</i>,<br /> stworzył<b>prototyp hipertekstowego systemu informacyjnego - <i>ENQUIRE</i></b></p>
Wybory, które nie używają <h1> do tytułu, nie oddają poprawnej struktury semantycznej wymaganej w XHTML. Oznaczenie nagłówka jako <b> jest niewłaściwe, ponieważ <b> jest znacznikiem stylizującym tekst jako pogrubiony, ale nie semantycznie nie mówi, że jest to nagłówek. XHTML, będąc bardziej restrykcyjną wersją HTML, wymaga ścisłego trzymania się hierarchii nagłówków, co pomaga w czytelności dokumentu przez oprogramowanie wspomagające i wyszukiwarki. Użycie <hr /> w odpowiedzi trzeciej jako linia pozioma jest semantycznie mylące, gdyż nie oddziela to części tekstu, a jedynie wizualnie dzieli fragmenty, co w XHTML, gdzie semantyka jest kluczowa, nie jest zalecane. Strona zapisana w XHTML powinna używać tagów zgodnie z ich przeznaczeniem, co poprawia dostępność i zrozumienie kodu. Dodatkowo, nieprawidłowo ustrukturyzowane znaczniki mogą prowadzić do problemów z parsowaniem przez przeglądarki, co jest niepożądane w profesjonalnym tworzeniu stron internetowych. Dlatego odpowiednia semantyka i poprawna struktura są kluczowe w projektowaniu stron zgodnych z XHTML.

Pytanie 35

Aby zrealizować podane czynności w JavaScript, należy w znaczniku <script> umieścić poniższy kod

  1. Wyświetlić okno do wpisania wartości z poleceniem "Podaj kwalifikacje: ", następnie po zatwierdzeniu
  2. Umieścić napis na stronie internetowej, gdzie w miejscu kropek znajduje się wartość pobrana z okna "Kwalifikacja: ..."
A. A << prompt("Podaj kwalifikację: "); document.write("Kwalifikacja: " + A)
B. A = alert("Podaj kwalifikację: "); document.write("Kwalifikacja: " + A)
C. A = prompt("Podaj kwalifikację: "); document.write("Kwalifikacja: ".A)
D. A = prompt("Podaj kwalifikację: "); document.write("Kwalifikacja: " + A)
Funkcja prompt() jest kluczowym elementem do interakcji z użytkownikiem w JavaScript. Próba przypisania wartości za pomocą operatora przesunięcia bitowego << jest błędna, ponieważ ten operator służy do manipulacji bitami liczby, a nie do przypisania wartości w kontekście prompt(). Użycie alert() zamiast prompt() wprowadza użytkownika w błąd, ponieważ alert() wyłącznie wyświetla komunikat i nie zwraca wartości, która mogłaby być przypisana do zmiennej. Ponadto próba konkatenacji za pomocą operatora kropki w JavaScript jest niewłaściwa, ponieważ JavaScript używa operatora + do łączenia ciągów tekstowych. Tego rodzaju błędne koncepcje prowadzą do niepoprawnego rozumienia podstawowych operacji w JavaScript i mogą utrudniać efektywne tworzenie dynamicznych aplikacji webowych. W kontekście dobrych praktyk, ważne jest, aby stosować właściwe operatory i funkcje zgodnie z ich przeznaczeniem. Należy również zaznaczyć, że stosowanie document.write() jest ograniczone do prostych przypadków i w bardziej złożonych scenariuszach zaleca się manipulację DOM poprzez bezpośrednie modyfikacje struktur HTML, co zapewnia większą kontrolę nad zawartością strony i minimalizuje ryzyko nadpisywania istotnych danych.

Pytanie 36

W przedstawionym kodzie HTML ukazany styl CSS to styl:

<p style="color: red;">To jest przykładowy akapit.</p>
A. zewnętrzny.
B. nagłówkowy.
C. lokalny.
D. dynamiczny.
Odpowiedź "lokalnym" jest prawidłowa, ponieważ styl CSS zastosowany w podanym kodzie HTML definiuje właściwości stylu bezpośrednio w elemencie HTML, co określamy jako styl lokalny (inline style). W tym przypadku, styl "color: red;" został zastosowany bezpośrednio w tagu <p>, co wpływa wyłącznie na ten konkretny akapit. Praktyczne zastosowanie lokalnych stylów polega na tym, że można je szybko dodać do pojedynczych elementów, ale należy pamiętać, że nadmiar lokalnych stylów może prowadzić do problemów z utrzymywaniem i zarządzaniem kodem. Zamiast tego zaleca się stosowanie zewnętrznych arkuszy stylów CSS, co pozwala na centralne zarządzanie stylami dla całej strony. Warto zauważyć, że lokalne style mają wyższy priorytet niż style zewnętrzne, co może prowadzić do konfliktów, jeśli nie zostaną odpowiednio użyte. Aby zapewnić zgodność z najlepszymi praktykami, zaleca się ograniczanie stosowania lokalnych stylów tam, gdzie to możliwe, na rzecz bardziej zorganizowanego podejścia z użyciem klas i identyfikatorów w zewnętrznych arkuszach stylów.

Pytanie 37

Jaką wartość w systemie szesnastkowym przyjmie kolor określony kodem RGB rgb(255, 128, 16)?

A. #ff8011
B. #ff0f10
C. #ff8010
D. #008010
Odpowiedź #ff8010 jest prawidłowa, ponieważ kolor o wartości rgb(255, 128, 16) w systemie szesnastkowym przekłada się na poszczególne wartości RGB. Wartości te są konwertowane w sposób następujący: 255 w systemie dziesiętnym odpowiada FF w systemie szesnastkowym, 128 to 80, a 16 to 10. Zatem, łącząc te składniki, otrzymujemy #ff8010. W praktyce, kolory te są często stosowane w projektowaniu graficznym oraz tworzeniu stron internetowych, gdzie dokładne odwzorowanie kolorów jest kluczowe. Kod szesnastkowy jest powszechnie używany ze względu na swoją kompaktowość i łatwość odczytu dla programistów. Warto więc zaznaczyć, że znajomość konwersji kolorów między różnymi systemami jest ważnym elementem w pracy nad kolorystyką w projektach cyfrowych oraz w branżach zajmujących się grafiką i designem. Dobre praktyki obejmują stosowanie narzędzi do wizualizacji kolorów oraz testowanie ich na różnych urządzeniach, aby zapewnić spójność wizualną.

Pytanie 38

Rodzaj programowania, w którym sekwencja poleceń (instrukcji) dostarczanych komputerowi jest traktowana jako program, określa się mianem programowania

A. imperatywnego
B. stanowego
C. funkcyjnego
D. logicznogo
Programowanie imperatywne to taki sposób myślenia w kodowaniu, gdzie dajemy komputerowi jasne instrukcje, co ma robić krok po kroku. Oznacza to, że mówimy mu, jak dojść do celu. To całkiem inne podejście niż w programowaniu funkcyjnym, gdzie raczej koncentrujemy się na funkcjach i operacjach na danych. W imperatywnym korzystamy z różnych elementów, jak zmienne, pętle czy warunki, żeby kontrolować, co się dzieje w programie. Można tu wymienić języki takie jak C, C++, Java czy Python – wszystkie są bardzo popularne w branży, zwłaszcza przy tworzeniu różnorodnych aplikacji lub systemów operacyjnych. Myślę, że połączenie programowania imperatywnego z obiektowym to świetny pomysł, bo dzięki temu łatwiej zarządzać kodem i korzystać z różnych wzorców projektowych, co zazwyczaj poprawia jego czytelność i efektywność.

Pytanie 39

W sekcji <head> (w elemencie <meta ... >) witryny www nie umieszcza się danych dotyczących

A. kodowania
B. typu dokumentu
C. automatycznego odświeżania
D. autora
Umieszczanie informacji o autorze, kodowaniu oraz automatycznym odświeżaniu w znaczniku <head> jest praktyką zgodną ze standardami, jednak występują nieporozumienia co do roli i miejsca deklaracji typu dokumentu. Wiele osób może błędnie zakładać, że typ dokumentu można umieścić w sekcji <head>, co jest nieprawidłowe. Deklaracja DOCTYPE, która informuje przeglądarkę o wersji HTML, musi być umieszczona przed znacznikiem <html> w kodzie. Tymczasem w sekcji <head> umieszczamy metadane, które mają bezpośredni wpływ na interpretację zawartości strony i jej interakcję z użytkownikami oraz wyszukiwarkami. Często popełnianym błędem jest mylenie tych dwóch elementów, co prowadzi do nieprawidłowego kodowania strony. Odpowiednie zrozumienie struktury dokumentu HTML jest kluczowe dla jego prawidłowego funkcjonowania; nieprawidłowe umiejscowienie deklaracji DOCTYPE może prowadzić do nieoczekiwanych zachowań w przeglądarkach, takich jak błędy w renderowaniu lub problemy z kompatybilnością. Dlatego ważne jest, aby znać zasady dotyczące tworzenia struktury dokumentów HTML, co przyczynia się do lepszej jakości kodu oraz większej wydajności stron internetowych.

Pytanie 40

W przedstawionym stylu CSS w ramce zdefiniowano klasę uzytkownik. Tekst na stronie będzie wyświetlany czcionką w kolorze niebieskim dla

p.uzytkownik { color: blue; }
A. dowolnych znaczników w sekcji <body>, które mają przypisaną klasę uzytkownik
B. wyłącznie znaczników tekstowych takich jak <p>, <h1>
C. akapitów, którym przypisano klasę uzytkownik
D. wszystkich akapitów
Zrozumienie, dlaczego niektóre odpowiedzi są niepoprawne, wymaga wiedzy o podstawach stylowania CSS. Odpowiedzi błędne mogą wynikać z nieprawidłowego rozumienia, jak działają selektory w CSS. CSS pozwala na precyzyjne określenie, które elementy HTML będą podlegały określonemu stylowi, dzięki użyciu selektorów. W przedstawionym przykładzie p.uzytkownik jest selektorem specyficznym, który oznacza wszystkie elementy <p> (paragrafy) z klasą uzytkownik. Selekcje te nie dotyczą wszystkich paragrafów, a jedynie tych z określoną klasą. Błędne przekonanie, że styl dotyczy wszystkich paragrafów, wynika z pominięcia faktu, że klasa jest specyfikatorem. Podobnie, twierdzenie, że dowolne znaczniki w sekcji <body> z klasą uzytkownik zostaną sformatowane, ignoruje fakt, że selektor dotyczy konkretnie paragrafów. Kluczową kwestią jest rozróżnienie między selektorami tagów, klas, ID i ich kombinacjami. Właściwe zrozumienie tych zasad pozwala na efektywne i precyzyjne stosowanie reguł CSS, co jest fundamentem tworzenia spójnych i estetycznych interfejsów użytkownika.