Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik informatyk
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 17 kwietnia 2026 12:52
  • Data zakończenia: 17 kwietnia 2026 13:01

Egzamin niezdany

Wynik: 12/40 punktów (30,0%)

Wymagane minimum: 20 punktów (50%)

Nowe
Analiza przebiegu egzaminu- sprawdź jak rozwiązywałeś pytania
Udostępnij swój wynik
Szczegółowe wyniki:
Pytanie 1

DOM oferuje metody oraz właściwości, które w języku JavaScript umożliwiają

A. przesyłanie danych formularzy bezpośrednio do bazy danych
B. przeprowadzanie operacji na zmiennych zawierających liczby
C. manipulację łańcuchami zdefiniowanymi w kodzie
D. pobieranie i zmianę elementów strony, która jest wyświetlana przez przeglądarkę
No cóż, odpowiedzi, które mówisz o manipulacji łańcuchami, wysyłaniu formularzy do baz czy operacjach na liczbach, nie są związane z tym, co oferuje DOM. Manipulacja łańcuchami dotyczy zmiennych w JavaScript, a nie interakcji z elementami na stronie. Wysyłanie formularzy do bazy danych to temat dla innych technologii, jak AJAX, a nie coś, co robi DOM. Operacje na liczbach też są częścią samego JavaScript, ale nie mają nic wspólnego z elementami HTML. Często można usłyszeć, że DOM to wszystko, co związane z JavaScript, ale tak nie jest. DOM to narzędzie do zmiany struktury strony, a nie do obliczeń. Warto to rozróżnić, żeby nie popełniać błędów w projektowaniu aplikacji webowych, bo to może przysporzyć problemów.

Pytanie 2

Który z typów formatów oferuje największą kompresję pliku dźwiękowego?

A. MP3
B. PCM
C. CD-Audio
D. WAV
Wybór formatów takich jak WAV, PCM czy CD-Audio w kontekście redukcji rozmiaru pliku dźwiękowego jest błędny, ponieważ wszystkie te formaty są klasyfikowane jako formaty bezstratne. Oznacza to, że podczas ich zapisu nie następuje utrata danych dźwiękowych, co z kolei prowadzi do dużych rozmiarów plików. WAV jest surowym formatem dźwiękowym, który przechowuje dane audio w ich najczystszej formie, co czyni go niewłaściwym wyborem dla osób, które potrzebują efektywnej kompresji. PCM (Pulse Code Modulation) to technika, która służy do przetwarzania dźwięku, ale sama w sobie nie zmniejsza rozmiaru pliku. CD-Audio to standard zapisu dźwięku na płytach CD, również charakteryzujący się dużym rozmiarem pliku, ponieważ przechowuje dźwięk w formacie bezstratnym o wysokiej jakości. Typowe błędy myślowe prowadzące do wyboru tych formatów to przekonanie, że jakość dźwięku jest najważniejsza, a nie zrozumienie, że wiele zastosowań wymaga kompromisu między jakością a rozmiarem. Dla użytkowników, którzy potrzebują codziennego dostępu do muzyki, formaty stratne, takie jak MP3, są bardziej praktyczne ze względu na ich niewielki rozmiar oraz dobrej jakości dźwięk.

Pytanie 3

Jaki System Zarządzania Bazą Danych jest standardowo używany w pakiecie XAMPP?

A. PostgreSQL
B. Firebird
C. MariaDB
D. Oracle
Oracle, Firebird i PostgreSQL to usługi baz danych, które różnią się od MariaDB zarówno pod względem architektury, jak i zastosowania. Oracle to komercyjny system zarządzania bazą danych, który oferuje zaawansowane funkcje, jednak jest on znacznie droższy i mniej dostępny dla indywidualnych programistów lub małych firm. Wykorzystanie Oracle w projektach lokalnych nie jest typowe, ponieważ jest bardziej skierowane na duże przedsiębiorstwa i złożone aplikacje korporacyjne. Firebird to również open-source'owy system, ale nie jest tak szeroko stosowany jak MariaDB w kontekście lokalnego rozwoju aplikacji. Użytkownicy często decydują się na MariaDB ze względu na jej kompatybilność z MySQL oraz szersze wsparcie społeczności. PostgreSQL jest znany z zaawansowanych funkcji i wsparcia dla bardziej skomplikowanych operacji, jednak jego integracja z XAMPP nie jest domyślna, co może wprowadzać użytkowników w błąd, mylnie zakładając, że jest to powszechnie stosowane rozwiązanie. Typowe błędy to nieadekwatne porównanie systemów bez uwzględnienia ich kontekstu użycia, co prowadzi do mylnych wniosków o ich popularności i zastosowalności w projektach lokalnych.

Pytanie 4

ALTER TABLE transport MODIFY COLUMN rok_produkcji INT;
Wykonanie powyższej kwerendy SQL w bazie MySQL spowoduje:
A. utworzenie tabeli transport zawierającej kolumnę rok_produkcji.
B. zmianę typu danych w kolumnie rok_produkcji na INT.
C. usunięcie kolumny rok_produkcji w tabeli transport.
D. dodanie kolumny rok_produkcji typu INT w tabeli transport.
Zapytanie `ALTER TABLE transport MODIFY COLUMN rok_produkcji INT;` operuje na już istniejącej tabeli i istniejącej kolumnie. Kluczowe są tu dwa słowa: ALTER TABLE oraz MODIFY COLUMN. ALTER TABLE oznacza modyfikację struktury tabeli, a nie jej tworzenie ani usuwanie. To polecenie zakłada, że tabela `transport` już jest w bazie. Dlatego interpretacja, że ta komenda tworzy tabelę, wynika często z mylenia jej z `CREATE TABLE`, które faktycznie służy do zakładania nowych tabel z określoną listą kolumn i ich typów. Podobnie jest z samą kolumną. MODIFY COLUMN nie usuwa kolumny – do tego służy `DROP COLUMN`. Usunięcie kolumny polega na całkowitym pozbyciu się jej definicji i wszystkich przechowywanych tam danych. Tutaj nic takiego się nie dzieje. Kolumna `rok_produkcji` dalej istnieje, tylko jej definicja jest zmieniana. Typowy błąd myślowy polega na tym, że ktoś widzi słowo MODIFY i kojarzy je z „przebudowaniem” kolumny, czasem nawet z jej zamianą na nową. W rzeczywistości MySQL po prostu aktualizuje metadane kolumny w strukturze tabeli, a dane – w miarę możliwości – konwertuje do nowego typu. Kolejna myląca kwestia to dodawanie kolumn. Do tego służy `ADD COLUMN`, np. `ALTER TABLE transport ADD COLUMN rok_produkcji INT;`. Tylko taka forma faktycznie tworzy nową kolumnę w tabeli. W podanym poleceniu nie ma słowa ADD, więc zakładanie, że kolumna zostanie dodana, jest po prostu niezgodne ze składnią SQL. Moim zdaniem te pomyłki biorą się głównie z powierzchownego kojarzenia słów kluczowych, bez dokładnego przeczytania dokumentacji. W pracy z bazami danych warto wyrobić sobie nawyk rozróżniania: CREATE – tworzy, ALTER – zmienia, DROP – usuwa, a wewnątrz ALTER: ADD – dodaje element struktury, MODIFY/ALTER COLUMN – zmienia istniejący element, DROP COLUMN – usuwa go. Takie jasne mapowanie poleceń na ich skutki bardzo ułatwia później bezpieczne modyfikowanie schematu bazy, zwłaszcza na systemach produkcyjnych, gdzie każdy błąd w DDL może mieć realne konsekwencje dla danych.

Pytanie 5

Jakiego typu tablicy dotyczy instrukcja dodawania elementu w JavaScript?

Tablica['technik'] = 'informatyk';
A. wielowymiarowej
B. stałej
C. asocjacyjnej
D. liczbowej
Tablice statyczne są strukturami danych, których rozmiar jest ustalony podczas deklaracji i nie może być zmieniony w trakcie działania programu. W językach programowania takich jak C czy C++ tablice statyczne są powszechnie wykorzystywane, lecz w JavaScript, gdzie struktury danych są zazwyczaj dynamiczne, taki koncept jest mniej istotny. Tablice numeryczne w kontekście JavaScript to po prostu tablice, które używają indeksów liczbowych do przechowywania danych. Jednakże, możliwość przypisania wartości do indeksu tekstowego, jak w przypadku 'Tablica['technik'] = 'informatyk';', jest charakterystyczna dla tablic asocjacyjnych, nie dla numerycznych. Tablice numeryczne mogą przetrzymywać dane w uporządkowany sposób, ale nie umożliwiają użycia kluczy innych niż liczby całkowite, co ogranicza ich zastosowania w porównaniu do tablic asocjacyjnych. Tablice wielowymiarowe to kolekcje tablic, gdzie każda komórka może przechowywać inną tablicę. W JavaScript można tworzyć tablice wielowymiarowe poprzez zagnieżdżanie tablic, ale nie ma to związku z przypisywaniem kluczy tekstowych. Zastosowanie nazwanych kluczy, jak w podanym przykładzie, jest specyficzne dla tablic asocjacyjnych, które w JavaScript są implementowane jako obiekty i pozwalają na bardziej elastyczne zarządzanie danymi niż tablice wielowymiarowe, które skupiają się na przechowywaniu danych w formie tabeli. Typowym błędem jest mylenie tablic numerycznych z asocjacyjnymi, co może prowadzić do błędów w kodzie związanych z nieprawidłowym dostępem do danych lub ich organizacją, co wyraźnie pokazuje, że zrozumienie różnic między tymi strukturami danych jest kluczowe dla efektywnego programowania w JavaScript.

Pytanie 6

W SQL polecenie ALTER TABLE służy do

A. usuwania tabeli z bazy danych
B. zmiany kolumn w tabeli
C. zmiany danych w rekordach tabeli
D. dodawania tabeli do bazy danych
Zrozumienie działania polecenia ALTER TABLE jest kluczowe w kontekście zarządzania bazami danych, ponieważ jego zastosowanie jest znacznie szersze niż sugerują to błędne odpowiedzi. Modyfikowanie danych rekordów w tabeli nie jest zadaniem ALTER TABLE; do tego celu używa się polecenia UPDATE, które pozwala na zmianę wartości w konkretnych kolumnach rekordów. Ponadto, usuwanie tabeli z bazy danych realizuje się za pomocą polecenia DROP TABLE, natomiast dodawanie nowych tabel wymaga użycia polecenia CREATE TABLE. Takie rozróżnienie jest podstawowe dla prawidłowego zarządzania bazą danych. Zrozumienie, że ALTER TABLE dotyczy struktury tabeli, a nie danych w nich zawartych, jest kluczowe dla unikania błędów w projektowaniu systemów baz danych. Często pomijanym aspektem jest również to, że zmiany wprowadzane przez ALTER TABLE mogą wpływać na integralność danych oraz wydajność operacji bazodanowych, dlatego praktyka dobrego zarządzania schematem bazy danych wymaga staranności i przemyślenia przed wykonaniem jakichkolwiek operacji zmieniających strukturę tabeli. Z tego powodu, użytkownicy powinni być świadomi, jakie polecenia są przeznaczone do konkretnych zadań, aby uniknąć nieporozumień i błędów w ich pracy.

Pytanie 7

W języku SQL polecenie INSERT INTO

A. aktualizuje rekordy określoną wartością.
B. dodaje tabelę.
C. dodaje pola do tabeli.
D. wprowadza dane do tabeli.
Polecenie INSERT INTO w SQL służy dokładnie do tego, co wskazuje poprawna odpowiedź: do wprowadzania danych do istniejącej tabeli. W praktyce oznacza to dodanie nowego wiersza (rekordu) do tabeli, która ma już zdefiniowaną strukturę: kolumny, typy danych, klucze itp. Najprostszy przykład w standardowym SQL wygląda tak: INSERT INTO klienci (imie, nazwisko, email) VALUES ('Jan', 'Kowalski', '[email protected]'); Tutaj tabela klienci już istnieje, a polecenie tylko dopisuje nowy rekord. Moim zdaniem warto zapamiętać, że INSERT pracuje na danych, a nie na strukturze tabeli. Do tworzenia tabel służy CREATE TABLE, do zmiany struktury ALTER TABLE, a do modyfikacji istniejących rekordów UPDATE. W codziennej pracy z bazami danych INSERT INTO jest jednym z absolutnie podstawowych poleceń. Używa się go przy obsłudze formularzy rejestracji użytkownika, dodawaniu zamówień w sklepie internetowym, logowaniu zdarzeń w systemie (logi), czy zapisywaniu wyników pomiarów z czujników. Dobrą praktyką jest zawsze podawanie listy kolumn, do których wstawiamy dane, zamiast polegać na kolejności kolumn w tabeli. Dzięki temu kod SQL jest czytelniejszy i mniej podatny na błędy po zmianach w strukturze tabeli. Warto też wiedzieć, że istnieją różne warianty INSERT, np. INSERT ... SELECT (wstawianie danych na podstawie wyników zapytania), INSERT IGNORE czy INSERT ... ON CONFLICT/ON DUPLICATE KEY w konkretnych systemach (PostgreSQL, MySQL). To wszystko dalej jest ta sama rodzina poleceń: celem zawsze jest dodanie nowych rekordów, a nie modyfikacja starych czy zmiana schematu bazy. Z mojego doświadczenia, kto dobrze ogarnie różne formy INSERT, temu dużo łatwiej budować sensowne aplikacje bazodanowe.

Pytanie 8

Model, w którym wszystkie informacje są zgromadzone w jednej tabeli, określa się jako struktura prostych baz danych

A. relacyjnym
B. jednorodnym
C. hierarchicznym
D. sieciowym
No więc, wybór modelu sieciowego mija się z celem, bo ten model opiera się na strukturze grafik, gdzie dane są przechowywane z różnymi relacjami między sobą. Model sieciowy pozwala na tworzenie bardziej skomplikowanych więzi niż te w modelu jednorodnym, co jest fajne w systemach, które potrzebują lepszego zarządzania danymi. A model relacyjny też tu nie pasuje, bo on działa na relacjach między tabelami i wykorzystuje klucze do łączenia danych z różnych tabel – to już jest przeciwieństwo modelu jednorodnego. Model hierarchiczny natomiast buduje dane jak drzewo, gdzie każdy element może mieć pod-elementy, co też nie pasuje do prostego modelu jednorodnego. Każdy z tych modeli ma swoje zastosowanie i plusy, ale żaden z nich nie oddaje idei modelu jednorodnego z danymi w jednej tabeli. Warto pamiętać, że dobry wybór modelu danych to klucz do łatwiejszej pracy z bazą, a zrozumienie różnic między nimi naprawdę wpływa na projektowanie systemów informatycznych.

Pytanie 9

Jak można zaznaczyć komentarz w kodzie PHP?

A. <? … ?>
B. /* … */
C. <!-- …. -->
D. /? … ?/
W kontekście komentarzy w kodzie PHP, wiele osób może się mylić co do sposobów ich implementacji. Odpowiedzi sugerujące użycie znaku <? … ?> oraz /? … ?/ są błędne, ponieważ te konstrukcje nie są przeznaczone do tworzenia komentarzy. Pierwsza z nich to otwierająca i zamykająca tagi PHP, które są używane do wprowadzenia kodu PHP w plikach, natomiast druga nie jest standardowym zapisem i nie ma zastosowania w języku PHP. Odpowiedź wskazująca na użycie <!-- …. --> również jest myląca, ponieważ taki zapis jest typowy dla języka HTML, a nie PHP. Komentarze w PHP mają na celu poprawę czytelności kodu, ale niepoprawne użycie formatowania komentarzy może prowadzić do nieporozumień i błędów w interpretacji kodu. Używanie znaków, które nie odpowiadają standardowym praktykom, może skutkować problemami w działaniu aplikacji, ponieważ interpreter PHP nie będzie w stanie zrozumieć, że próbujemy umieścić komentarz. Dlatego ważne jest, aby znać odpowiednie konwencje dotyczące komentarzy i stosować je zgodnie ze standardami branżowymi, aby unikać takich pomyłek.

Pytanie 10

Wskaż, jaki błąd walidacyjny zawiera przedstawiony fragment kodu w języku HTML 5.

<h6>CSS</h6>
<p>Kaskadowe arkusze stylów (<b>ang. <i>Cascading Style Sheets</b></i>)<br>to język służący ...</p>
A. Znacznik h6 nie jest używany w HTML5
B. Znacznik br nie został prawidłowo zamknięty
C. Znacznik zamykający /b jest niezgodny z zasadą zagnieżdżania
D. Znacznik br nie powinien znajdować się wewnątrz znacznika p
Znacznik br w języku HTML5 może być stosowany samodzielnie i nie wymaga dodatkowego zamykania. Jest to znacznik pusty, który służy do wstawiania przerw w tekście i nie ma żadnych treści wewnętrznych. Jest szeroko używany i całkowicie dopuszczalny w ramach standardu HTML5. Użycie go wewnątrz znacznika p nie jest błędem; br jest wykorzystywany do łamania linii w akapitach i jest często stosowany w celach formatowania tekstu. W przypadku znacznika <h6>, jest on jak najbardziej częścią HTML5, służąc do definiowania nagłówków o najmniejszej ważności w hierarchii nagłówków. Zastosowanie wszystkich sześciu poziomów nagłówków (<h1> do <h6>) jest zgodne ze standardami, a każdy z nich ma swoje specyficzne zastosowanie w strukturze dokumentu. Dlatego też odpowiedzi sugerujące, że znacznik br musi być zamknięty lub że h6 nie jest częścią HTML5, są błędne i wynikają z niezrozumienia lub nieaktualnej wiedzy na temat standardów HTML. Prawidłowa konstrukcja dokumentu HTML i znajomość specyfikacji pozwalają na tworzenie semantycznie poprawnych i dobrze działających stron WWW.

Pytanie 11

Przemiana kodu źródłowego wykonanego przez programistę w zrozumiały dla maszyny kod maszynowy to

A. analizowanie błędów
B. wykonywanie
C. kompilowanie
D. wdrażanie
Rozważając inne odpowiedzi, warto zauważyć, że debugowanie nie jest procesem tłumaczenia kodu źródłowego, lecz metodą identyfikacji i usuwania błędów w już skompilowanym programie. Debugger to narzędzie, które pozwala programistom na inspekcję kodu w czasie rzeczywistym, co pomaga w lokalizowaniu miejsc, w których program działa niepoprawnie. Z kolei uruchamianie odnosi się do wykonywania już skompilowanego kodu maszynowego, co również nie dotyczy procesu tłumaczenia kodu źródłowego. Implementowanie to termin oznaczający wprowadzanie funkcji czy algorytmów w kodzie źródłowym, a nie ich kompilację. Typowym błędem myślowym, który prowadzi do nieprawidłowych odpowiedzi, jest mylenie procesów programistycznych. W praktyce, zrozumienie różnicy między kompilowaniem, debugowaniem, uruchamianiem a implementowaniem jest kluczowe dla efektywnego rozwoju oprogramowania. Każdy z tych procesów ma swoje unikalne funkcje i zastosowania, a ich pomylenie może prowadzić do nieefektywności i błędów w pracy programisty.

Pytanie 12

W SQL, aby usunąć wszystkie rekordy z tabeli, ale zachować jej strukturę, należy użyć polecenia:

A. DELETE FROM
B. DROP TABLE
C. TRUNCATE
D. REMOVE
W SQL, aby usunąć wszystkie rekordy z tabeli, ale zachować jej strukturę, używamy polecenia <code>DELETE FROM</code>. To polecenie jest częścią języka manipulacji danymi (DML) i pozwala na usunięcie danych bez usuwania samej tabeli. Warto zwrócić uwagę, że <code>DELETE FROM</code> może być użyte z klauzulą <code>WHERE</code>, aby usunąć tylko wybrane rekordy, ale bez tej klauzuli usunie wszystkie wiersze z tabeli. Zaletą tego podejścia jest to, że struktura tabeli, jej indeksy i inne atrybuty pozostają nienaruszone. Ponadto, polecenie <code>DELETE FROM</code> jest transakcyjne, co oznacza, że można je wycofać w ramach sesji transakcyjnej, co może być przydatne w przypadku błędów lub zmian w decyzji. Użycie tego polecenia jest zgodne z dobrymi praktykami zarządzania danymi, szczególnie w sytuacjach, gdy chcemy jedynie zresetować zawartość tabeli bez jej usuwania z bazy danych.

Pytanie 13

Wskaż sposób oznaczania komentarzy wielowierszowych w kodzie PHP.

A. <!-- treść komentarza -->
B. // treść komentarza
C. /* treść komentarza*/
D. / treść komentarza/
W PHP składnia komentarzy jest bardzo konkretna i dość ściśle określona, więc drobna pomyłka w znakach powoduje, że interpreter nie potraktuje fragmentu jako komentarza, tylko jako zwykły tekst kodu – co zwykle kończy się błędem składni. Wiele osób myli pojęcia z innych technologii, np. z HTML albo z ogólnego zapisu tekstowego, i stąd biorą się nietrafione odpowiedzi. Znak // w PHP oznacza komentarz, ale tylko jednowierszowy. Oznacza to, że wszystko od // do końca danej linii jest ignorowane, ale już kolejna linia jest znowu normalnym kodem. To jest bardzo wygodne do krótkich dopisków obok instrukcji, np. $x = 5; // liczba elementów. Nie można jednak w ten sposób w prosty sposób opisać większego bloku, który zajmuje kilka wierszy, bo każdy z nich musiałby zaczynać się od //. Technicznie da się, ale jest to nieczytelne i w większych projektach wygląda zwyczajnie słabo. Zapis / treść komentarza/ wygląda trochę jak intuicyjna próba „otoczenia” tekstu ukośnikami, ale w składni PHP nie ma takiej konstrukcji. Pierwszy ukośnik jest traktowany jako początek operatora dzielenia, a dalsza część jako coś zupełnie innego, więc interpreter zgłosi błąd. To typowy błąd: ktoś kojarzy, że są jakieś ukośniki przy komentarzach, ale nie pamięta dokładnej kolejności i ilości znaków. Z kolei <!-- treść komentarza --> to składnia komentarza z języka HTML, a nie z PHP. W plikach .php często mieszamy kod PHP z kodem HTML i wtedy łatwo się pomylić, ale warto to rozdzielać w głowie: gdy jesteśmy „w środku” PHP, czyli pomiędzy znacznikami <?php i ?>, obowiązują zasady komentarzy z PHP: //, # oraz /* */. Natomiast gdy piszemy czysty HTML (poza blokiem PHP), wtedy używamy komentarza <!-- -->. Przenoszenie składni HTML do PHP po prostu nie zadziała, bo interpreter PHP tego nie rozumie. Dobra praktyka jest taka, żeby świadomie wybierać rodzaj komentarza: // lub # do krótkich, jednowierszowych uwag oraz /* */ do dłuższych opisów, dokumentacji funkcji i klas. Mieszanie składni z różnych technologii albo wymyślanie własnych „ozdobnych” wariantów kończy się błędami i trudnym do utrzymania kodem. W programowaniu webowym, szczególnie w PHP, precyzyjna składnia komentarzy to drobiazg, ale bez niej szybko pojawiają się trudne do zlokalizowania problemy, więc warto mieć to dobrze poukładane.

Pytanie 14

Funkcja phpinfo() umożliwia:

A. inicjowanie skryptu w języku PHP
B. uzyskanie informacji o środowisku pracy serwera obsługującego PHP
C. analizowanie kodu PHP pod kątem błędów
D. sprawdzanie wartości zmiennych wykorzystanych w skrypcie PHP
Funkcja phpinfo() jest kluczowym narzędziem w ekosystemie PHP, które dostarcza szczegółowych informacji o konfiguracji środowiska, w którym działa PHP. Użycie tej funkcji pozwala deweloperom na uzyskanie danych takich jak wersja PHP, zainstalowane rozszerzenia, ustawienia konfiguracyjne, oraz dane o systemie operacyjnym. Przykładowo, deweloper może wykorzystać phpinfo() do szybkiego sprawdzenia, czy potrzebne rozszerzenie, takie jak GD lub cURL, jest zainstalowane na serwerze. Pozwoli to uniknąć problemów związanych z brakującymi funkcjami w kodzie. Ponadto, funkcja ta jest także pomocna w procesach rozwiązywania problemów, ponieważ umożliwia natychmiastowy wgląd w kluczowe zmienne konfiguracyjne, co jest zgodne z najlepszymi praktykami w zakresie zarządzania środowiskami aplikacji webowych. Warto jednak pamiętać, że phpinfo() powinno być używane ostrożnie i tylko w środowisku deweloperskim, aby nie ujawniać danych konfiguracyjnych w produkcji.

Pytanie 15

W języku PHP zmienna globalna $_POST, służąca do odbierania danych z formularza przesłanych metodą POST, jest: 

A. ciągiem znaków zakodowanym w JSON.
B. tablicą asocjacyjną.
C. zmienną tekstową.
D. obiektem klasy stdClass.
W PHP zmienna superglobalna $_POST nie jest ani ciągiem znaków, ani zwykłą zmienną tekstową, ani obiektem. To jedno z częstszych nieporozumień u osób, które dopiero zaczynają z programowaniem webowym. Mechanizm przesyłania danych metodą POST w HTTP faktycznie polega na wysłaniu zakodowanego ciągu danych w treści żądania, ale interpreter PHP po odebraniu takiego requestu automatycznie parsuje ten strumień i mapuje go na tablicę asocjacyjną. Programista nie pracuje już z surowym tekstem, tylko z gotową strukturą danych – z tablicą. Może się wydawać, że skoro dane „lecą” przez sieć jako tekst, to $_POST powinna być po prostu stringiem. Jednak PHP, zgodnie z filozofią ułatwiania pracy, od razu rozbija ten tekst na pary klucz–wartość na podstawie nazwy pól formularza. Dzięki temu nie trzeba ręcznie parsować treści żądania ani rozdzielać jej po znakach & i =. Dlatego koncepcja, że $_POST jest zmienną tekstową albo jednym dużym ciągiem (np. w JSON) jest myląca. JSON to osobny format serializacji danych; PHP nie koduje automatycznie $_POST do JSON, chyba że sam to zrobisz, np. json_encode($_POST). Inny błąd myślowy to traktowanie $_POST jako obiektu, bo w wielu nowoczesnych frameworkach mamy różne klasy Request, które udostępniają metody typu $request->getPost(). W czystym PHP taka abstrakcja nie jest domyślnie obecna – $_POST to zwykła tablica asocjacyjna, a nie instancja stdClass ani żadnej innej klasy. Jeżeli ktoś oczekuje zachowania obiektowego, to musi je samemu zbudować albo skorzystać z frameworka. Podsumowując, poprawne rozumienie $_POST jako tablicy asocjacyjnej jest kluczowe, bo wpływa na to, jak później bezpiecznie walidujemy, filtrujemy i przetwarzamy dane z formularzy. Założenie, że to string, JSON lub obiekt prowadzi do błędnych założeń przy implementacji logiki aplikacji i często do niepotrzebnych komplikacji w kodzie.

Pytanie 16

W języku JavaScript trzeba zapisać warunek, który będzie prawdziwy, gdy zmienna a będzie jakąkolwiek liczbą naturalną dodatnią (bez 0) lub zmienna b przyjmie wartość z zamkniętego przedziału od 10 do 100. Wyrażenie logiczne w tym warunku ma formę

A. (a>0) || ((b>=10) && (b<=100))
B. (a>0) && ((b>=10) && (b<=100))
C. (a>0) && ((b>=10) || (b<=100))
D. (a>0) || ((b>=10) || (b<=100))
Warunek zapisany w języku JavaScript jako (a>0) || ((b>=10) && (b<=100)) jest poprawny, ponieważ spełnia wymagania dotyczące sprawdzenia, czy zmienna a jest liczbą naturalną dodatnią oraz czy zmienna b mieści się w przedziale od 10 do 100. Wyrażenie logiczne wykorzystuje operator || (alternatywa), który zwraca true, jeśli przynajmniej jeden z warunków jest spełniony. Warunek a>0 zapewnia, że zmienna a jest większa od zera, co jest zgodne z definicją liczb naturalnych dodatnich. Z kolei wyrażenie (b>=10) && (b<=100) sprawdza, czy zmienna b jest w zadanym przedziale, co jest zgodne z wymaganiami. Wartości graniczne 10 i 100 są uwzględnione dzięki operatorowi && (konjunkcja), który wymaga, aby oba warunki były prawdziwe, aby całe wyrażenie zwróciło true. W praktyce, takie podejście można wykorzystać w różnych kontekstach, np. walidacji danych wejściowych w formularzach internetowych, gdzie kluczowe jest zapewnienie, że użytkownik wprowadza poprawne wartości. Tego rodzaju wyrażenia logiczne są fundamentem programowania w JavaScript, umożliwiając tworzenie bardziej złożonych logik aplikacji. Zgodnie z dokumentacją ECMAScript, użycie operatorów logicznych jest standardowym sposobem na przetwarzanie warunków w programowaniu.

Pytanie 17

W języku JavaScript przedstawiona definicja jest definicją

var imiona = ["Anna", "Jakub", "Iwona", "Krzysztof"];
A. klasy.
B. obiektu.
C. tablicy.
D. kolekcji.
Dobra robota! Wybrałeś poprawną odpowiedź, czyli tablicę. W języku JavaScript, tablice służą do przechowywania wielu wartości w pojedynczej zmiennej. W podanym przykładzie, zmienna 'imiona' jest tablicą, która zawiera ciągi znaków reprezentujące imiona. Tablica w JavaScript jest obiektem globalnym, który jest używany w kontekście obiektu. Tablice są jednym z podstawowych typów danych, które są niezbędne dla tworzenia i manipulowania danymi. Tworzenie tablicy jest bardzo proste, wystarczy użyć nawiasów kwadratowych [] i oddzielić elementy za pomocą przecinków. Oto przykład: var imiona = ['Jan', 'Anna', 'Piotr'];. W praktyce, tablice są używane w wielu różnych sytuacjach, takich jak przechowywanie danych do dalszej analizy, grupowanie powiązanych danych, tworzenie list lub tabel, a także do przechowywania danych na potrzeby pętli i innych struktur sterujących.

Pytanie 18

Efekt przedstawiony w filmie powinien być zdefiniowany w selektorze

A. tr:hover { background-color: Pink; }
B. tr:active { background-color: Pink; }
C. tr { background-color: Pink; }
D. td, th { background-color: Pink; }
W tym zadaniu chodzi o zrozumienie, jak działają selektory CSS oraz pseudo-klasy odpowiedzialne za interakcję z użytkownikiem. Jeśli efekt ma pojawiać się tylko wtedy, gdy użytkownik najedzie myszką na wiersz tabeli, to zwykłe ustawienie background-color bez pseudo-klasy nie spełni tego warunku. Deklaracja tr { background-color: Pink; } oznaczałaby, że wszystkie wiersze tabeli są cały czas różowe, niezależnie od tego, czy ktoś na nie najedzie, czy nie. To jest po prostu styl statyczny, bez żadnej reakcji na zdarzenia. Podobnie zapis td, th { background-color: Pink; } ustawia tło dla wszystkich komórek tabeli (zarówno nagłówkowych th, jak i zwykłych td) w sposób stały. Moim zdaniem to dość częsty błąd: ktoś kojarzy tabelę z komórkami i intuicyjnie styluje td/th, ale zapomina, że w pytaniu chodzi o efekt dynamiczny „po najechaniu”. W rezultacie otrzymujemy tabelę pokolorowaną na stałe, bez jakiejkolwiek interakcji, co jest sprzeczne z założeniem zadania i z typowym zachowaniem tabel w nowoczesnych interfejsach. Ciekawsza jest kwestia selektora tr:active { background-color: Pink; }. Pseudo-klasa :active oznacza element w momencie „aktywacji”, czyli najczęściej w chwili klikania (przytrzymania przycisku myszy). Efekt trwa bardzo krótko, tylko w czasie samego kliknięcia. To zupełnie inny scenariusz niż wygodne podświetlenie wiersza, które ma się utrzymywać, dopóki kursor jest nad elementem. Użycie :active prowadzi do efektu, który miga na ułamek sekundy i z punktu widzenia ergonomii jest praktycznie bezużyteczny w kontekście podświetlania wierszy. Typowy błąd myślowy przy takich pytaniach polega na myleniu różnych pseudo-klas: :hover, :active, :focus. W webdevie przyjęło się, że :hover służy do reakcji na najechanie myszką, :active do krótkiej reakcji na kliknięcie, a :focus do zaznaczenia elementu, który ma aktualnie fokus klawiatury. Standardy CSS i dobre praktyki projektowania interfejsów jasno wskazują, że do efektu „podświetl wiersz, gdy nad nim jestem” należy użyć właśnie :hover na odpowiednim elemencie, czyli w tym przypadku tr. Wszystkie pozostałe odpowiedzi ignorują tę zasadę albo stosują nie tę pseudo-klasę, co trzeba, przez co nie odzwierciedlają poprawnie zachowania pokazanego w materiale wideo.

Pytanie 19

W HTML, aby utworzyć poziomą linię, należy zastosować znacznik

A. <hr>
B. <hl>
C. <line>
D. <br>
Znacznik <line> nie jest standardowym elementem HTML i nie istnieje w specyfikacji tego języka. Z tego powodu nie może być użyty do tworzenia poziomej linii. Użytkownicy mogą mylić go z innymi terminami związanymi z grafiką wektorową, gdzie pojawia się pojęcie 'linia', jednak HTML nie przewiduje takiego znacznika. Kolejnym błędnym rozwiązaniem jest znacznik <br>, który jest używany do łamania linii w tekście. Umożliwia on przejście do nowej linii, ale nie daje efektu poziomej linii oddzielającej sekcje treści. Jest to element samodzielny, jednak jego funkcjonalność jest zupełnie inna. Z kolei znacznik <hl> nie istnieje w standardach HTML. Użytkownicy mogą go pomylić z innymi znacznikami, ale <hl> nie jest zdefiniowany w żadnym z wersji HTML, co oznacza, że przeglądarki go nie rozpoznałyby, co skutkowałoby brakiem jakiegokolwiek wizualnego efektu. Użycie niepoprawnych znaczników może prowadzić do problemów z interpretacją dokumentów HTML i ich wyświetlaniem w przeglądarkach, co negatywnie wpłynie na użytkowników oraz SEO strony.

Pytanie 20

W PHP, aby poprawnie zakończyć połączenie z bazą danych MySQL, ostatnim krokiem powinno być użycie polecenia

A. die
B. exit
C. mysql_exit
D. mysqli_close
Aby prawidłowo obsłużyć połączenie z bazą danych MySQL w języku PHP, kluczowym krokiem jest zamknięcie tego połączenia po zakończeniu operacji na bazie danych. Najlepszą praktyką jest użycie funkcji mysqli_close. Ta funkcja jest częścią rozszerzenia MySQLi (MySQL Improved), które oferuje nowoczesne podejście do komunikacji z bazą danych, w tym zwiększone bezpieczeństwo i wydajność. Po wywołaniu mysqli_close, wszystkie zasoby związane z połączeniem są zwalnianie, co pozwala na uniknięcie potencjalnych wycieków pamięci. Przykładowe użycie: $connection = mysqli_connect('host', 'user', 'password', 'database'); // Po dokonaniu operacji na bazie danych mysqli_close($connection);. Ważne jest, aby zamykać połączenia, szczególnie w aplikacjach działających w środowisku produkcyjnym, aby zapewnić optymalne wykorzystanie zasobów serwera oraz bezpieczeństwo danych. Standardowe zalecenia dokumentacji PHP podkreślają znaczenie użycia mysqli_close w celu zakończenia sesji z bazą danych, co sprzyja stabilności i niezawodności aplikacji.

Pytanie 21

Funkcja phpinfo() umożliwia

A. uzyskanie danych o środowisku serwera, na którym działa PHP
B. sprawdzenie wartości zmiennych zastosowanych w kodzie PHP
C. rozpoczęcie wykonywania kodu w języku PHP
D. analizowanie kodu PHP w celu wykrycia błędów
Wiele osób myli funkcję phpinfo() z innymi narzędziami i technikami w PHP, co może prowadzić do nieporozumień. Zainicjowanie kodu w języku PHP nie jest funkcjonalnością phpinfo(). Kod PHP jest interpretowany przez serwer, a phpinfo() nie ma na celu uruchamiania kodu. Również, jeśli chodzi o debugowanie kodu PHP, phpinfo() nie służy bezpośrednio do tego celu. Chociaż może dostarczyć przydatnych informacji, takich jak wartości zmiennych konfiguracyjnych, nie zastępuje dedykowanych narzędzi do debugowania, takich jak Xdebug, które oferują znacznie bardziej zaawansowane możliwości analizy i śledzenia błędów w kodzie. Dodatkowo, sprawdzanie wartości zmiennych użytych w kodzie PHP również nie jest funkcją phpinfo(). Wartości zmiennych można sprawdzić, stosując inne techniki, takie jak var_dump() czy print_r(), które dają bezpośredni wgląd w zawartość zmiennych w czasie wykonania skryptu. Typowym błędem jest także przyjmowanie, że phpinfo() może być używane do zarządzania konfiguracją aplikacji. W rzeczywistości, ta funkcja jest jedynie narzędziem diagnostycznym, które dostarcza informacji o bieżącym stanie środowiska serwera, ale nie pozwala na jego zmianę ani na modyfikację ustawień. Dlatego ważne jest, aby zrozumieć ograniczenia phpinfo() i stosować odpowiednie narzędzia do różnych zadań związanych z programowaniem w PHP.

Pytanie 22

Baza danych zawiera tabelę uczniowie z kolumnami: imie, nazwisko, klasa. Jakie polecenie SQL powinno być użyte, aby wyświetlić imiona i nazwiska uczniów, których nazwiska zaczynają się na literę M?

A. SELECT nazwisko, imie FROM uczniowie WHERE nazwisko IN "M%"
B. SELECT nazwisko, imie FROM uczniowie ORDER BY nazwisko IN "M%"
C. SELECT nazwisko, imie FROM uczniowie WHERE nazwisko LIKE "M%"
D. SELECT nazwisko, imie FROM uczniowie ORDER BY nazwisko = "M%"
Wybór opcji SELECT nazwisko, imie FROM uczniowie WHERE nazwisko LIKE "M%" jest poprawny, ponieważ używa klauzuli WHERE do filtrowania rekordów na podstawie warunków. Operator LIKE pozwala na wyszukiwanie wzorców w danych tekstowych, a symbol % jest używany jako wildcard, co oznacza, że zastępuje dowolny ciąg znaków. Dzięki temu zapytanie zwraca wszystkich uczniów, których nazwiska zaczynają się na literę M. Takie podejście jest zgodne z najlepszymi praktykami w SQL, gdzie klauzula WHERE jest fundamentalnym elementem selekcji danych. W praktyce, gdy chcemy wyszukiwać dane w bazach danych, użycie LIKE w połączeniu z symbolami wieloznacznymi (takimi jak %) jest powszechną techniką, stosowaną w aplikacjach webowych i systemach zarządzania danymi. Przykładowo, w systemie szkolnym, takie zapytanie może być używane do generowania listy uczniów w celu wysyłania powiadomień lub gromadzenia informacji o postępach w nauce.

Pytanie 23

Funkcja PHP var_dump() wyświetla informację na temat zmiennej: jej typ i wartość. Wynikiem dla przedstawionego fragmentu kodu jest:

$x = 59.85;
var_dump($x);
A. float(59.85)
B. int(59)
C. string(5) "59.85"
D. array(2) { [0]=> int(59) [1]=> int(85) }
Niestety, Twoja odpowiedź nie była poprawna. Niepoprawne odpowiedzi sugerowały różne typy danych i struktury, które nie odpowiadają prawdziwemu wynikowi funkcji var_dump() dla zmiennej o wartości 59.85. Na przykład, jedna z niepoprawnych odpowiedzi sugerowała, że wynikiem jest int(59), co by było prawdą, gdyby wartość zmiennej była liczbą całkowitą, a nie liczbą zmiennoprzecinkową. Inna niepoprawna odpowiedź sugeruje, że wynikiem jest string(5) "59.85". W tym przypadku, wartość jest prawidłowa, ale typ jest nieprawidłowy. PHP nie zamienia automatycznie liczb na stringi bez jawnego żądania. Jeszcze inna błędna odpowiedź sugeruje, że wynikiem jest tablica składająca się z dwóch liczb całkowitych, co jest niezgodne z rzeczywistością. PHP nie tworzy automatycznie tablic z pojedynczych zmiennych. Sugerowane przez te niepoprawne odpowiedzi błędy wynikają z niezrozumienia typów danych w PHP oraz zasady działania funkcji var_dump(). Zrozumienie jak PHP obsługuje różne typy danych jest kluczowe do poprawnego korzystania z tego języka.

Pytanie 24

O obiekcie przedstawionym w JavaScript można powiedzieć, że posiada

var obiekt1 = {
    x: 0,
    y: 0,
    wsp: function() { [...] }
}
A. dwoma metodami oraz jedną właściwością
B. trzema właściwościami
C. dwoma właściwościami oraz jedną metodą
D. trzema metodami
Analizując strukturę obiektów w języku JavaScript, często spotykamy się z terminami właściwości i metody. Właściwości to elementy obiektu przechowujące dane, natomiast metody to funkcje przypisane jako wartości właściwości, które pozwalają na wykonywanie operacji na obiekcie. Błędne zrozumienie tych pojęć może prowadzić do niepoprawnej interpretacji struktury obiektu. Jeśli zakładamy, że obiekt ma dwie metody i jedną właściwość, oznaczałoby to, że w obiekcie znajdziemy dwie funkcje i jeden element przechowujący dane, co nie odpowiada rzeczywistości przedstawionej na obrazku. Podobnie, stwierdzenie, że obiekt zawiera trzy właściwości, ignoruje obecność funkcji, która pełni rolę metody. Z kolei twierdzenie, że obiekt ma trzy metody, oznaczałoby całkowity brak właściwości przechowujących dane, co jest sprzeczne z danymi stanowymi obiektu. Takie nieporozumienia wynikają często z braku zrozumienia struktury i natury obiektów w języku JavaScript. Dla poprawnego programowania kluczowe jest rozróżnienie tych elementów i poprawne przypisywanie ich ról w obiekcie, co prowadzi do bardziej wydajnego i przejrzystego kodu. Dobre praktyki programistyczne zalecają dokładne analizowanie wymagań i struktury danych przy projektowaniu obiektów, co pozwala na uniknięcie takich błędów w przyszłości i poprawia jakość aplikacji.

Pytanie 25

Jakie zadanie wykonuje funkcja napisana w JavaScript?

function fun1(a,b)
{
    if ( a % 2 != 0 ) a++;
    for(n=a; n<=b; n+=2)
        document.write(n);
}
A. sprawdzenie, czy liczba a jest liczbą nieparzystą; jeśli tak, to jej wypisanie
B. wypisanie wszystkich liczb w zakresie od a do b
C. wypisanie liczb parzystych w przedziale od a do b
D. zwrócenie parzystych wartości liczb od a do b
Analiza niepoprawnych odpowiedzi wymaga zrozumienia, dlaczego poszczególne opcje nie pasują do działania funkcji fun1. W pierwszym przypadku, opcja dotycząca sprawdzania, czy liczba a jest nieparzysta i jej wypisywania, nie jest zgodna z logiką funkcji. Chociaż funkcja sprawdza, czy a jest nieparzysta, to nie wypisuje jej, lecz zmienia ją na parzystą, co wskazuje, że jej celem nie jest wypisywanie liczby a, ale przygotowanie jej do dalszej iteracji. Wypisanie wszystkich liczb z przedziału od a do b również nie jest prawidłowe, ponieważ funkcja nie iteruje po wszystkich liczbach, lecz wyłącznie po liczbach parzystych. Warto zauważyć, że funkcja pomija wszystkie liczby nieparzyste, co wyklucza tę opcję. Kolejna możliwa odpowiedź sugeruje zwracanie wartości parzystych liczb od a do b, jednak funkcja nie wykorzystuje żadnej procedury zwracania wartości, a jej konstrukcja wskazuje na bezpośrednie wypisywanie wyników, co wyklucza tę możliwość. Typowy błąd myślowy to niepoprawne rozumienie działania pętli for oraz operacji wypisywania danych w kontekście przeglądarki internetowej, co jest istotne z punktu widzenia dynamicznych aplikacji webowych. Zrozumienie, jak działa operator modulo i jego rola w wyznaczaniu parzystości liczb, jest kluczowe dla poprawnego interpretowania takich fragmentów kodu. Wskazane jest również, aby programiści byli świadomi różnicy między wypisywaniem a zwracaniem wyników, co często prowadzi do nieporozumień w kontekście funkcji i metod w JavaScript i innych językach programowania.

Pytanie 26

DOM oferuje metody i właściwości, które w języku JavaScript umożliwiają

A. manipulowanie łańcuchami zadeklarowanymi w kodzie
B. przeprowadzanie operacji na zmiennych przechowujących liczby
C. pobieranie oraz modyfikowanie elementów strony widocznej w przeglądarce
D. przesyłanie danych formularza bezpośrednio do bazy danych
Zarówno wysyłanie danych formularza bezpośrednio do bazy danych, jak i manipulowanie zadeklarowanymi w kodzie łańcuchami są podejściami, które mogą być mylące w kontekście funkcji DOM. Przede wszystkim, DOM nie jest odpowiedzialny za interakcję z bazami danych. Wysyłanie danych formularza do bazy danych odbywa się zazwyczaj poprzez technologię backendową, taką jak PHP, Node.js czy Python, która przetwarza dane po stronie serwera. Użytkownik nie może bezpośrednio łączyć się z bazą danych z poziomu przeglądarki, co jest kluczowym aspektem bezpieczeństwa aplikacji internetowych. Ponadto, manipulacja łańcuchami w kontekście DOM również nie jest jego funkcją. DOM jest skoncentrowany na reprezentacji strukturalnej dokumentu, a nie na operacjach na danych. Takie operacje powinny być realizowane w kontekście zmiennych JavaScript, a nie za pośrednictwem DOM. Zrozumienie różnicy między tymi technologiami jest fundamentalne, aby uniknąć nieporozumień w programowaniu oraz zapewnić poprawne funkcjonowanie aplikacji. Typowe błędy myślowe obejmują mylenie pojęć związanych z front-endem i back-endem, co może prowadzić do błędnych wniosków na temat architektury aplikacji. Kluczowe jest, aby programiści zdawali sobie sprawę, że każdy komponent aplikacji ma swoje specyficzne zadania i odpowiedzialności.

Pytanie 27

Jakiej funkcji w języku PHP należy użyć, aby nawiązać połączenie z bazą danych pod nazwą zwierzaki?

A. $polacz = sql_connect('localhost', 'root', '', 'zwierzaki')
B. $polacz = server_connect('localhost', 'root', '', 'zwierzaki')
C. $polacz = mysqli_connect('localhost', 'root', '', 'zwierzaki')
D. $polacz = db_connect('localhost', 'root', '', 'zwierzaki')
Odpowiedź $polacz = mysqli_connect('localhost', 'root', '', 'zwierzaki'); jest poprawna, ponieważ wykorzystuje funkcję mysqli_connect, która jest dedykowana do nawiązywania połączeń z bazami danych MySQL w języku PHP. Funkcja ta przyjmuje cztery argumenty: adres serwera (w tym przypadku 'localhost'), nazwę użytkownika ('root'), hasło (które jest puste w tym przykładzie) oraz nazwę bazy danych ('zwierzaki'). Użycie mysqli jest zgodne z aktualnymi standardami i dobrą praktyką w programowaniu, ponieważ oferuje szereg usprawnień w porównaniu do starszych metod, takich jak mysql_connect, które zostały usunięte w nowszych wersjach PHP. Mysqli (MySQL Improved) wspiera zarówno programowanie obiektowe, jak i proceduralne, co czyni go bardziej elastycznym. W przypadku nawiązywania połączenia warto również pamiętać o obsłudze błędów, co można osiągnąć poprzez dodatkowe sprawdzenie, czy połączenie zostało nawiązane pomyślnie za pomocą funkcji mysqli_connect_error(). Przykład poprawnego użytkowania w kodzie mógłby wyglądać następująco: $polacz = mysqli_connect('localhost', 'root', '', 'zwierzaki'); if (!$polacz) { die('Connection failed: ' . mysqli_connect_error()); }

Pytanie 28

Wypisanie tekstu w języku JavaScript nie jest możliwe przy użyciu

A. własności innerHTML
B. funkcji MessageBox()
C. metody document.write()
D. metody window.alert()
Poprawnie wskazana została funkcja MessageBox(), bo w standardowym JavaScripcie działającym w przeglądarce taka funkcja po prostu nie istnieje. JavaScript udostępnia kilka mechanizmów do wypisywania tekstu, ale są one ściśle określone przez środowisko (głównie DOM i obiekt window), a nie przez jakieś ogólne, „systemowe” funkcje typu MessageBox. Właściwość innerHTML należy do elementów DOM i służy do modyfikowania ich zawartości HTML. Przykład: const div = document.getElementById('wynik'); div.innerHTML = 'Witaj w <b>JavaScript</b>'; To jest typowy, zgodny ze standardami sposób dynamicznej zmiany treści na stronie. W praktyce używa się go bardzo często, choć moim zdaniem lepiej w prostych przypadkach stosować textContent, bo jest bezpieczniejsze (nie interpretuje HTML-a, więc mniejsze ryzyko XSS). Metoda window.alert() jest wbudowaną funkcją interfejsu przeglądarki. Wyświetla prosty modalny komunikat z przyciskiem OK. Przykład: alert('Komunikat dla użytkownika'); W wielu poradnikach to pierwszy sposób „wypisania” czegokolwiek, bo od razu widać efekt. W profesjonalnych aplikacjach używa się go rzadko, raczej do szybkiego debugowania, bo blokuje interakcję z użytkownikiem. Metoda document.write() pozwala wpisać tekst bezpośrednio do strumienia dokumentu HTML podczas jego ładowania: document.write('Hello world'); Historycznie było to popularne, ale w nowoczesnych projektach uważa się to za złą praktykę. Po załadowaniu strony document.write() może nadpisać cały dokument, co jest mocno niepożądane. Lepszym standardem jest manipulacja DOM (np. innerHTML, createElement, appendChild). Natomiast MessageBox() kojarzy się z funkcjami z innych środowisk (np. WinAPI, C#, VBA), ale w JavaScripcie w przeglądarce taka funkcja nie jest zdefiniowana w żadnym oficjalnym standardzie. Jeśli ktoś jej użyje bez własnej definicji, skończy się to błędem „MessageBox is not defined”. Dlatego właśnie ta odpowiedź jest poprawna – nie da się w czystym, standardowym JS wypisać tekstu przy użyciu funkcji MessageBox(), chyba że samemu ją wcześniej napiszemy, ale to już zupełnie inna historia.

Pytanie 29

Jaką złożoność obliczeniową mają problemy związane z przeprowadzaniem operacji na łańcuchach lub tablicach w przypadku dwóch zagnieżdżonych pętli przetwarzających wszystkie elementy?

A. O(log n)
B. O(n!)
C. O(n2)
D. O(n)
Często przy analizie złożoności obliczeniowej popełniamy błędy, bo staramy się ocenić, ile operacji jest potrzebnych, a kontekst ma tu spore znaczenie. Odpowiedź O(n) może wydawać się kusząca, ale oznacza, że operacje są tylko liniowe, co mija się z prawdą, gdy mamy zagnieżdżone pętle. Jak jedna pętla przechodzi przez n elementów, a druga również przechodzi przez n dla każdej iteracji, to nie ma mowy o liniowości. Co do O(n!), to dotyczy to permutacji i jest zupełnie inną sprawą niż prosta iteracja przez elementy. A O(log n) - w tym przypadku jest mylące, bo odnosi się do algorytmów takich jak wyszukiwanie binarne, które działają na posortowanych danych, a nie przy przetwarzaniu wszystkich elementów. Ważne jest, żeby mieć to na uwadze. Różne operacje wymagają różnych metod analizy, a złożoność algorytmiczna jest kluczowa przy projektowaniu dobrych i wydajnych rozwiązań.

Pytanie 30

Dana jest tabela uczniowie, do której wpisano rekordy jak na rysunku. Co będzie wynikiem działania przedstawionego zapytania SQL?

SELECT AVG(ocena) FROM uczniowie;

NazwiskoImieocena
KowalskiSebastian4
KaczmarekMarta3
BaryłaZenon4
GotaAnna3
A. Suma ocen równa 14
B. Liczba wierszy równa 4
C. Dane 4, 3, 4, 3
D. Wartość 3.5
Widzę, że popełniłeś parę błędów w odpowiedziach. Stwierdzenie 'Suma ocen równa 14' pokazuje, że mogłeś nie do końca zrozumieć, jak działa AVG, bo ta funkcja nie sumuje wartości, ale liczy średnią. Z kolei odpowiedzi 'Dane 4, 3, 4, 3' i 'Liczba wierszy równa 4' też sugerują, że coś nie tak z interpretacją wyników. Pierwsza sugeruje, że zapytanie wyciąga konkretne liczby, a to nieprawda, bo AVG zwraca tylko jedną wartość – średnią. A druga odpowiedź wprowadza w błąd, mówiąc o liczbie wierszy, podczas gdy AVG operuje na wartościach, a nie ich ilości. Tego typu pomyłki mogą wynikać z nieznajomości funkcji agregujących w SQL. Ważne jest, żeby zrozumieć, co każda funkcja robi i jakie zwraca wyniki.

Pytanie 31

W języku HTML, aby uzyskać następujący efekt formatowania, należy zapisać kod:

pogrubiony pochylony lub w górnym indeksie

A. <i>pogrubiony <b>pochylony lub w </i><sup>górnym indeksie</sup>
B. <b>pogrubiony <i>pochylony</i></b> lub w <sub>górnym indeksie</sub>
C. <b>pogrubiony </b><i>pochylony</i> lub w <sup>górnym indeksie</sup>
D. <i>pogrubiony </i><b>pochylony</b> lub w <sub>górnym indeksie</sub>
Poprawna odpowiedź to: <b>pogrubiony </b><i>pochylony</i> lub w <sup>górnym indeksie</sup>. Ta odpowiedź prawidłowo wykorzystuje trzy kluczowe tagi HTML do formatowania tekstu: <b>, <i> i <sup>. Tag <b> służy do wyświetlania tekstu w pogrubionym formacie, co pozwala na podkreślenie istotnych fragmentów tekstu. Przykładem może być wyróżnienie tytułów, nagłówków lub kluczowych punktów w treści. Tag <i> jest używany do wyświetlania tekstu w formacie kursywy, co jest często używane do wyróżnienia tytułów książek, filmów, cytowań lub podkreślenia ważnych punktów. Tag <sup> jest używany do wyświetlania napisów jako tekst górnego indeksu, co jest często używane do wskazania numerów stron, przypisów, lub dla oznaczeń matematycznych lub naukowych. Pamiętaj, że prawidłowe użycie tych tagów jest kluczowe dla tworzenia jasnej, czytelnej i profesjonalnie wyglądającej strony internetowej.

Pytanie 32

Atrybut value w formularzu XHTML

A. ustawia pole jako tylko do odczytu
B. ogranicza maksymalną długość pola
C. określa wartość domyślną
D. określa nazwę pola
Odpowiedzi, które wskazują na ograniczanie długości pola, nazwę pola oraz ustawienie pola tylko do odczytu, są niepoprawne, ponieważ każda z tych funkcji ma inne atrybuty lub mechanizmy. Atrybut, który ogranicza długość wprowadzanego tekstu, to 'maxlength', który definiuje maksymalną liczbę znaków, jakie użytkownik może wprowadzić w polu. Użycie 'maxlength' jest istotne, gdy chcemy zapewnić, że dane wprowadzone przez użytkownika nie przekraczają określonej długości, co jest szczególnie ważne w przypadku danych, które muszą spełniać określone wymagania. Kolejnym błędnym stwierdzeniem jest to, że 'value' wskazuje na nazwę pola. Nazwa pola jest określona przez atrybut 'name', a nie 'value'. Atrybut 'name' jest kluczowy dla identyfikacji danych podczas przesyłania formularza. Ostatnim nieporozumieniem jest twierdzenie, że 'value' ustawia pole tylko do odczytu, co również jest nieprawdziwe. Do ustawienia pola jako tylko do odczytu stosuje się atrybut 'readonly'. Atrybut 'value' jedynie ustawia domyślną wartość, ale nie wpływa na możliwość edycji tego pola. Zrozumienie funkcji poszczególnych atrybutów HTML jest kluczowe dla efektywnego projektowania formularzy i interfejsów użytkownika.

Pytanie 33

Wskaż prawdziwe stwierdzenie dotyczące polecenia:

CREATE TABLE IF NOT EXISTS adres (ulica VARCHAR(70) CHARACTER SET utf8);
A. IF NOT EXISTS stosuje się opcjonalnie, aby upewnić się, że w bazie danych nie istnieje już taka tabela.
B. Rekordem tabeli nie może być '3 MAJA'.
C. Klauzula CHARACTER SET utf8 jest obowiązkowa.
D. Do tabeli nie można wprowadzać nazw ulic zawierających polskie znaki.
Niepoprawne odpowiedzi pokazują kilka powszechnych błędów myślowych. Na przykład, stwierdzenie, że do tabeli nie można wprowadzać ulic zawierających polskie znaki, jest nieprawdziwe. W rzeczywistości, zastosowanie odpowiedniego kodowania, takiego jak utf8, umożliwia przechowywanie dowolnych znaków specjalnych w tabelach SQL, w tym polskich. To jest bardzo ważne, gdy pracujemy z danymi, które mogą zawierać różne zestawy znaków. Druga nieprawidłowa odpowiedź sugeruje, że klauzula CHARACTER SET utf8 jest obowiązkowa. Jest to również mylące, ponieważ chociaż jest to dobra praktyka, aby umożliwić przechowywanie znaków specjalnych, nie jest to wymagane przez standard SQL. Ostatnia nieprawidłowa odpowiedź sugeruje, że rekordem tabeli nie może być '3 MAJA'. To jest błędne, ponieważ typ danych VARCHAR(70) w SQL pozwala na przechowywanie dowolnych ciągów znaków, w tym dat i nazw. W przypadku wszystkich tych nieprawidłowych odpowiedzi, ważne jest, aby rozumieć podstawy zarządzania danymi i struktur tabeli w SQL.

Pytanie 34

Który z poniższych fragmentów kodu JavaScript zwróci true?

A. "ab" > "c"
B. "abc" > "def"
C. "a" > "b"
D. "def" > "abc"
Porównania 'a' > 'b', 'ab' > 'c' oraz 'abc' > 'def' nie zwracają wartości true z powodu zasad leksykalnego porównania ciągów tekstowych w JavaScript. W pierwszym przypadku, porównując 'a' do 'b', 'a' ma wartość Unicode 97, a 'b' wartość 98. Ponieważ 97 jest mniejsze niż 98, porównanie zwraca false. W drugim przypadku, 'ab' i 'c' są analizowane w ten sposób, że 'a' (97) jest mniejsze niż 'c' (99), co również skutkuje wynikiem false, ponieważ porównanie zaczyna się od pierwszych znaków. Ostatnie porównanie 'abc' > 'def' także zwraca false, ponieważ pierwszy znak 'd' (100) jest większy niż 'a' (97), co sprawia, że całe porównanie jest fałszywe. Warto zauważyć, że w przypadku porównań ciągów tekstowych, wielkość liter ma wpływ na wynik, dlatego 'A' będzie mniejsze od 'a', co może prowadzić do nieporozumień, szczególnie przy pracy z danymi użytkowników lub przy sortowaniu. Zrozumienie tych zasad jest kluczowe dla programistów, aby unikać błędów logicznych w kodzie.

Pytanie 35

Wskaż poprawne stwierdzenie dotyczące poniższej definicji stylu:

<style>
<!--
P{color:blue; font-size:14pt; font-style:italic}
A{font-size: 16pt ; text-transform:lowercase;}
TD.niebieski {color: blue}
TD.czerwony {color: red}
-->
</style>
A. Odnośnik będzie napisany czcionką 14 punktów
B. Określono dwie kategorie
C. To jest styl lokalny
D. Akapit będzie konwertowany na małe litery
Styl lokalny to takie style, które dodaje się bezpośrednio w plikach HTML, często w tagu style lub jako atrybut style w elementach HTML. W tym przypadku mamy do czynienia z osobnym blokiem CSS, więc nie jest to styl lokalny. Co do rozmiaru czcionki linku, to stwierdzenie, że ma 14 punktów, jest błędne. W kodzie CSS widzimy, że rozmiar czcionki dla elementu P to 14 punktów, ale dla elementu A jest ustawiony na 16 punktów. Często takie nieporozumienia wynikają z tego, że nie analizuje się dokładnie kodu źródłowego albo myli się różne selektory. Odnośnie transponowania akapitu na małe litery, to też nie jest poprawne, bo właściwość text-transform: lowercase dotyczy odnośników, nie akapitów. W nauce o CSS ważne jest, żeby dobrze rozumieć zasady działania i umieć rozróżniać, które selektory i właściwości stosują się do konkretnych elementów HTML. To wymaga praktyki i dokładnej analizy kodu. Zrozumienie tych rzeczy jest kluczowe w pracy nad stronami internetowymi, bo pozwala na efektywne zarządzanie stylami. Dobrze stosowane style to podstawa dla każdego, kto zajmuje się tworzeniem i utrzymywaniem stron, żeby wszystko wyglądało spójnie i działało jak trzeba.

Pytanie 36

Aby wyszukać w tabeli Pracownicy tylko te nazwiska, które kończą się na literę "i", można zastosować kwerendę SQL

A. SELECT nazwisko FROM Pracownicy WHERE nazwisko LIKE "i"
B. SELECT nazwisko FROM Pracownicy WHERE nazwisko LIKE "%i%"
C. SELECT nazwisko FROM Pracownicy WHERE nazwisko LIKE "%i"
D. SELECT nazwisko FROM Pracownicy WHERE nazwisko LIKE "i%"
Te odpowiedzi, które wybrałeś, mają niestety sporo błędów. W pierwszej odpowiedzi 'SELECT nazwisko FROM Pracownicy WHERE nazwisko LIKE "i%";' próbujesz znaleźć nazwiska, które zaczynają się na 'i', a nie kończą. To dość poważny błąd, bo operator LIKE działa różnie, w zależności od wzorca. W drugiej odpowiedzi 'SELECT nazwisko FROM Pracownicy WHERE nazwisko LIKE "%i%";' szukasz nazwisk, gdzie 'i' jest gdziekolwiek, a nie tylko na końcu. To sprawia, że wyniki są znacznie szersze i nie odpowiadają temu, czego szukasz. Ostatnia odpowiedź, czyli 'SELECT nazwisko FROM Pracownicy WHERE nazwisko LIKE "i";', wymaga, żeby nazwisko było dokładnie 'i', co jest bardzo mało prawdopodobne. Często widzę, że ludzie mylą działanie wildcardów w SQL. Ważne jest, aby dobrze zrozumieć, jak używać wzorców, bo to pomaga w tworzeniu skutecznych kwerend.

Pytanie 37

Zdefiniowano poniższą funkcję w PHP:

function policz($Z) {
    while($Z < 5) {
        $Z += 2 * $Z + 1;
    }
    return $Z;
}
Funkcję policz wywołano z wartością argumentu $Z = 1. Jaki rezultat zostanie zwrócony?
A. 4
B. 13
C. 7
D. 1
Twoja odpowiedź jest na miejscu. Funkcja 'policz' w PHP działa jak pętla, która powoli zwiększa wartość zmiennej $Z, dopóki nie jest większa niż 5. W każdej iteracji dodaje do niej wynik z wyrażenia 2 * $Z + 1. Zaczynamy z $Z równym 1. W pierwszej iteracji wychodzi 3 ($Z = 2 * 1 + 1), a w drugiej – 13 ($Z = 2 * 3 + 1). Kiedy $Z przekracza 5, pętla się zatrzymuje, a funkcja 'policz' zwraca 13. Rozumiejąc, jak to działa, łatwiej przewidywać, co się stanie w podobnych funkcjach.

Pytanie 38

Atrybut, który definiuje lokalizację pliku graficznego w znaczniku <img>, to

A. alt
B. href
C. link
D. src
Atrybut 'src' (source) w znaczniku <img> jest kluczowy, ponieważ określa lokalizację pliku graficznego, który ma być wyświetlany na stronie internetowej. Bez tego atrybutu przeglądarka nie byłaby w stanie załadować i wyświetlić obrazka, co skutkowałoby pustym miejscem w interfejsie użytkownika. Dobrym przykładem zastosowania atrybutu 'src' jest umieszczanie zdjęć produktów w sklepie internetowym, gdzie obrazek jest kluczowym elementem zachęcającym do zakupu. Na przykład, używając znacznika <img src='ścieżka/do/obrazka.jpg' alt='opis obrazka'>, programiści mogą nie tylko wyświetlić grafikę, ale także dostarczyć opis alternatywny, co jest zgodne z zasadami dostępności w sieci. W praktyce, dobrym zwyczajem jest przechowywanie grafik w odpowiednich katalogach oraz dbanie o optymalizację ich rozmiaru, aby poprawić czas ładowania strony oraz doświadczenia użytkownika. Warto również zwrócić uwagę na poprawne wykorzystanie protokołów, takich jak HTTPS, co zwiększa bezpieczeństwo przesyłanych danych oraz zaufanie użytkowników.

Pytanie 39

W programowaniu obiektowym proces, dzięki któremu klasa podrzędna może wykorzystywać metody z klasy nadrzędnej, określa się mianem

A. polimorfizmem
B. wirtualizacją
C. hermetyzacją
D. dziedziczeniem
Polimorfizm, hermetyzacja i wirtualizacja to pojęcia związane z programowaniem obiektowym, ale nie odnoszą się do mechanizmu współdzielenia pól i metod klasy. Polimorfizm to koncepcja, która pozwala obiektom różnych klas być traktowanymi jako obiekty jednej klasy bazowej. Umożliwia to pisanie bardziej elastycznego kodu, który może pracować z różnymi typami obiektów. Na przykład, jeśli mamy metodę, która przyjmuje jako argument obiekt klasy 'Pojazd', możemy przekazać zarówno obiekt 'Samochód', jak i 'Motocykl', a metoda zadziała poprawnie w obu przypadkach. Hermetyzacja to natomiast technika ograniczania dostępu do wewnętrznych danych klasy, co pozwala na ochronę stanu obiektu przed nieautoryzowanymi modyfikacjami. Oznacza to, że pola klasy są często oznaczane jako prywatne, a dostęp do nich uzyskuje się za pomocą metod publicznych. Wirtualizacja odnosi się do technik umożliwiających tworzenie wirtualnych instancji, co jest bardziej związane z wirtualizacją systemów operacyjnych niż z dziedziczeniem w OOP. Typowe błędy myślowe mogą wynikać z mylenia tych pojęć z dziedziczeniem, co często zdarza się osobom, które dopiero zaczynają swoją przygodę z programowaniem obiektowym. Kluczowe jest zrozumienie, że każda z tych koncepcji ma swoje unikatowe zastosowanie i nie można ich stosować zamiennie bez utraty sensu i poprawności kodu.

Pytanie 40

SELECT ocena FROM oceny WHERE ocena > 2 ORDER BY ocena;
Załóżmy, że istnieje tabela oceny zawierająca kolumny id, nazwisko, imię oraz ocena. Przykładowe zapytanie ilustruje:
A. sumę.
B. selekcję.
C. łączenie.
D. rekurencję.
Zapytanie przedstawione w pytaniu nie jest przykładem łączenia ponieważ nie występuje w nim klauzula JOIN która jest podstawowym narzędziem do łączenia tabel w bazach danych. Łączenie danych jest używane gdy potrzebujemy zintegrować informacje z różnych źródeł i polega na zestawieniu wierszy z dwóch lub więcej tabel na podstawie wspólnego klucza. Zamiast tego zapytanie używa klauzuli WHERE która służy do selekcji danych. Nie jest też przykładem rekurencji. Rekurencja w kontekście baz danych dotyczy wykonywania operacji powtarzających się w określonej sekwencji lub hierarchii co jest typowe dla struktur takich jak drzewa. Wiąże się to zwykle z użyciem zapytań zawierających takie konstrukcje jak WITH RECURSIVE w SQL co nie jest obecne w tym zapytaniu. Ponadto zapytanie nie jest przykładem sumy ponieważ nie zawiera funkcji agregujących takich jak SUM które służą do zliczania wartości w kolumnie. Suma jest używana do obliczeń statystycznych a nie do filtrowania danych na podstawie kryteriów logicznych jak to ma miejsce w przedstawionym przykładzie. Zrozumienie tych różnic jest kluczowe dla poprawnego formułowania zapytań i efektywnego wykorzystania systemów bazodanowych. Poprawne identyfikowanie mechanizmów w SQL pozwala efektywnie wykorzystać możliwości języka w analizie danych i zarządzaniu bazami co jest szczególnie istotne w profesjonalnych projektach IT. Zrozumienie logicznej struktury SQL i różnic między tymi koncepcjami jest kluczowe dla skutecznego i wydajnego wykorzystania baz danych w praktyce zawodowej i biznesowej.