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 czerwca 2026 01:50
  • Data zakończenia: 8 czerwca 2026 02:10

Egzamin zdany!

Wynik: 29/40 punktów (72,5%)

Wymagane minimum: 20 punktów (50%)

Nowe
Analiza przebiegu egzaminu- sprawdź jak rozwiązywałeś pytania
Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

Podczas zapisywania hasła użytkownika w serwisie WWW, na przykład w bankowości internetowej, aby zabezpieczyć je przed odczytaniem, zazwyczaj stosuje się funkcję

A. abstrakcyjnych
B. cyklometrycznych
C. klucza
D. mieszających
Użycie klucza do zabezpieczania haseł użytkowników jest standardową praktyką w dziedzinie bezpieczeństwa informatycznego. Klucz, który może być generowany na podstawie hasła lub stanowić odrębny, losowy ciąg znaków, jest stosowany w procesach szyfrowania. Dzięki temu, nawet jeśli dane hasło zostanie przechwycone, bez klucza nie jest możliwe jego odczytanie. W praktyce powszechnie wykorzystuje się algorytmy kryptograficzne, takie jak AES (Advanced Encryption Standard), które wymagają kluczy do szyfrowania i deszyfrowania informacji. W kontekście hasła użytkownika, stosuje się także techniki takie jak hashowanie, gdzie dane są przekształcane w unikalny skrót. Przykładem jest funkcja bcrypt, która nie tylko przechowuje hasło, ale i dodaje sól, co dodatkowo utrudnia ataki słownikowe. Takie podejście do zarządzania hasłami jest zgodne z najlepszymi praktykami, jak OWASP Password Storage Cheat Sheet, która zaleca unikanie przechowywania haseł w formie czystego tekstu oraz stosowanie silnych algorytmów kryptograficznych.

Pytanie 2

Przedstawiony fragment kodu PHP ma za zadanie umieścić dane znajdujące się w zmiennych $a, $b, $c w bazie danych, w tabeli dane. Tabela dane zawiera cztery pola, z czego pierwsze to autoinkrementowany klucz główny. Które z poleceń powinno być przypisane do zmiennej $zapytanie?

<?php
...
$zapytanie = "...";
mysqli_query($db, $zapytanie);
...
?>
A. SELECT NULL, '$a', '$b', '$c' FROM dane;
B. INSERT INTO dane VALUES (NULL, '$a', '$b', '$c');
C. SELECT '$a', '$b', '$c' FROM dane;
D. INSERT INTO dane VALUES ('$a', '$b', '$c');
Właściwe polecenie to 'INSERT INTO dane VALUES (NULL, '$a', '$b', '$c');'. Użycie NULL w pierwszym polu pozwala na automatyczne ustawienie wartości klucza głównego, co jest zgodne z zasadą autoinkrementacji w bazach danych. Wartości zmiennych $a, $b i $c są wstawiane do kolejnych pól tabeli, co jest standardową praktyką w przypadku dodawania nowych rekordów do bazy danych. Dobrą praktyką jest również stosowanie przygotowanych zapytań, aby zminimalizować ryzyko ataków typu SQL injection. Można to osiągnąć za pomocą funkcji mysqli_prepare, co zwiększa bezpieczeństwo aplikacji. W kontekście standardów branżowych, PostgreSQL oraz MySQL stosują podobne zasady dotyczące wstawiania danych, co czyni tę wiedzę uniwersalną dla różnych systemów zarządzania bazami danych. Warto również zrozumieć, że wstawianie danych bezpośrednio przy użyciu zmiennych bez walidacji może prowadzić do błędów, dlatego zaleca się ich odpowiednie przetwarzanie przed wykonaniem zapytania.

Pytanie 3

Zarządzanie procesem przekształcania kodu źródłowego stworzonego przez programistę na kod maszynowy, który jest zrozumiały dla komputera, nosi nazwę

A. analizowanie
B. kompilowanie
C. rozpoczynanie
D. wdrażanie
Kompilowanie to proces, w którym kod źródłowy, napisany w języku programowania wysokiego poziomu, jest przekształcany na kod maszynowy, który może być zrozumiany i wykonany przez komputer. Działa to na zasadzie analizy składniowej i semantycznej kodu źródłowego, a następnie generowania odpowiednich instrukcji dla procesora. Przykładem narzędzi, które realizują ten proces, są kompilatory, takie jak GCC dla języka C czy javac dla języka Java. Kompilowanie ma kluczowe znaczenie w programowaniu, ponieważ pozwala na optymalizację kodu, co zwiększa wydajność aplikacji. Dobre praktyki wskazują, że kompilowanie powinno być częścią cyklu programowania, a regularne kompilowanie kodu pomaga w szybszym wykrywaniu błędów oraz zapewnia, że kod jest zawsze zgodny z wymaganiami projektowymi. Warto również zaznaczyć, że proces kompilacji może obejmować różne etapy, takie jak prekompilacja, generacja kodu pośredniego oraz linkowanie, co czyni go złożonym i wieloetapowym działaniem.

Pytanie 4

Przedstawiona jest tabela pracownicy, w której umieszczono rekordy widoczne obok. Jaką wartość zwróci wykonanie umieszczonej w ramce kwerendy SQL?

SELECT MAX(pensja) FROM pracownicy WHERE pensja < 3000;
idimienazwiskopensja
1AnnaKowalska3400
2MonikaNowak1300
3EwelinaNowakowska2600
4AnnaPrzybylska4600
5MariaKowal2200
6EwaNowacka5400
A. 2200
B. 2600
C. 5400
D. 1300
Kwerenda SQL SELECT MAX(pensja) FROM pracownicy WHERE pensja < 3000; służy do znalezienia maksymalnej wartości w kolumnie pensja z rekordów spełniających warunek pensja mniejsza niż 3000. Przeszukując tabelę pracownicy widzimy że wartości spełniające ten warunek to 1300 2600 i 2200. Najwyższą z tych wartości jest 2600 co czyni tę odpowiedź poprawną. Zrozumienie tego typu kwerend SQL jest kluczowe w pracy z bazami danych ponieważ pozwala na wyciąganie konkretnych informacji z dużych zbiorów danych. W praktyce takie zapytania mogą być używane do analizowania danych pracowniczych w firmach gdzie na przykład chcemy zidentyfikować pracowników z wynagrodzeniem poniżej określonego progu. Jest to zgodne z dobrymi praktykami w branży gdzie używa się agregacji danych do celów analitycznych. Zrozumienie jak działa funkcja MAX() w połączeniu z klauzulą WHERE umożliwia efektywne filtrowanie i przetwarzanie danych co jest niezbędne w wielu aplikacjach biznesowych.

Pytanie 5

Jakie będzie działanie po naciśnięciu przycisku oznaczonego jako "niebieski", który uruchamia podany kod JavaScript?

<p id="para1">Przykładowy tekst</p><p> i skrypt</p>
<button onClick="changeColor('blue');">niebieski</button>

<script type="text/javascript">
function changeColor(newColor)
{
var elem = document.getElementById("para1");
elem.style.color = newColor;
}
</script>
A. Zmiana koloru tekstu "i skrypt" na niebieski
B. Zmiana koloru tekstu "Przykładowy tekst i skrypt" na niebieski
C. Zmiana barwy przycisku na niebieski
D. Zmiana koloru tekstu "Przykładowy tekst" na niebieski
Kod JavaScript przedstawiony w pytaniu definiuje funkcję changeColor która przyjmuje jeden argument newColor. Po wywołaniu funkcji przez kliknięcie przycisku funkcja ta używa metody document.getElementById aby pobrać element o identyfikatorze para1. Identyfikator ten jest przypisany do pierwszego elementu paragrafu zawierającego tekst Przykładowy tekst. Następnie w ramach tego elementu zmieniany jest kolor tekstu poprzez przypisanie newColor do właściwości style.color. W omawianym przypadku newColor przyjmuje wartość blue co oznacza że tekst Przykładowy tekst zmieni kolor na niebieski. Warto podkreślić że manipulacja DOM przy użyciu JavaScript jest powszechnie stosowaną techniką w tworzeniu dynamicznych interfejsów użytkownika. Używanie metod takich jak getElementById jest standardem ze względu na ich prostotę oraz efektywność w selekcji elementów HTML. W praktycznych zastosowaniach warto również pamiętać o zgodności ze standardami W3C oraz o możliwościach rozszerzenia za pomocą bibliotek takich jak jQuery które oferują jeszcze bardziej zaawansowane opcje manipulacji DOM.

Pytanie 6

Aby zaimportować plik z danymi SQL do bazy danych MySQL, można użyć narzędzia:

A. phpMyAdmin
B. Symfony 3
C. FileZilla
D. TotalCommander
Trzy z czterech narzędzi służą do czegoś innego niż praca z bazą danych. FileZilla to klient FTP - przenosi pliki między komputerem a serwerem, ale nie zagląda do środka bazy ani nie wykonuje poleceń SQL. Symfony to framework PHP, czyli szkielet do budowania aplikacji webowych; może łączyć się z bazą w kodzie, lecz samo w sobie nie jest narzędziem do importu gotowego pliku .sql. Total Commander to klasyczny menedżer plików systemu operacyjnego - kopiuje i porządkuje pliki, nic więcej. Do zaimportowania danych z pliku SQL do MySQL służy phpMyAdmin, który ma do tego wbudowaną funkcję Import.

Pytanie 7

Na przedstawionym diagramie ER zapis FK1 oznacza

Ilustracja do pytania
A. relację 1:1.
B. klucz podstawowy.
C. relację 1:N.
D. klucz obcy.
Skrót FK1 na diagramie ER oznacza klucz obcy (ang. foreign key) i jest to dokładnie to, co powinno łączyć tabelę Zamówienia z tabelą Klienci. W relacyjnych bazach danych klucz obcy to atrybut lub zestaw atrybutów, który wskazuje na klucz podstawowy w innej tabeli. Dzięki temu baza danych wie, że konkretne zamówienie należy do konkretnego klienta. W twoim diagramie pole NR_klienta w tabeli Zamówienia jest oznaczone jako FK1, czyli jest kluczem obcym odwołującym się do NR_klienta będącego kluczem podstawowym (PK) w tabeli Klienci. To jest klasyczny przykład relacji 1:N – jeden klient może mieć wiele zamówień, a każde zamówienie jest powiązane z dokładnie jednym klientem. W praktyce, w SQL, taka relacja jest definiowana mniej więcej tak: `FOREIGN KEY (NR_klienta) REFERENCES Klienci(NR_klienta)`. Taka definicja pozwala silnikowi bazy danych pilnować spójności referencyjnej, czyli np. nie pozwoli wstawić zamówienia z numerem klienta, który nie istnieje w tabeli Klienci, ani usunąć klienta, do którego wciąż istnieją zamówienia (chyba że jawnie zdefiniujemy CASCADE). Z mojego doświadczenia poprawne używanie kluczy obcych bardzo upraszcza później raportowanie, łączenie tabel w zapytaniach JOIN i ogólnie utrzymanie porządku w bazie. W modelowaniu ER oznaczenie FK wraz z numerem (FK1, FK2 itd.) to po prostu sposób na jednoznaczne nazwanie konkretnych kluczy obcych, gdy w systemie jest ich więcej. W dobrze zaprojektowanych bazach danych zawsze warto jawnie definiować foreign key, zamiast tylko „ufać”, że aplikacja będzie podawała poprawne dane – to jest po prostu dobra praktyka i standard w profesjonalnych projektach.

Pytanie 8

W trakcie weryfikacji stron internetowych nie analizuje się

A. błędów składniowych w kodzie
B. zgodności z różnymi przeglądarkami
C. funkcjonowania linków
D. źródeł pochodzenia narzędzi edytorskich
W procesie walidacji stron internetowych kluczowym celem jest upewnienie się, że kod HTML, CSS i inne zasoby są zgodne z obowiązującymi standardami W3C (World Wide Web Consortium). Walidacja skutecznie identyfikuje błędy składniowe, które mogą wpływać na renderowanie strony, analizuje działanie linków, a także sprawdza, jak strona zachowuje się w różnych przeglądarkach. Jednak aspekty związane z pochodzeniem narzędzi edytorskich nie są istotnym elementem tego procesu. Narzędzia edytorskie, takie jak edytory tekstowe czy IDE, są jedynie środkiem do tworzenia kodu, a ich źródło nie powinno wpływać na to, czy strona jest poprawnie zaimplementowana. Na przykład, strona może być poprawnie zwalidowana niezależnie od tego, czy została zbudowana w popularnym edytorze, takim jak Visual Studio Code, czy innym mniej znanym narzędziu. Dlatego koncentrowanie się na źródłach narzędzi edytorskich w kontekście walidacji byłoby nieuzasadnione i nieprzydatne.

Pytanie 9

W języku Javascript obiekt typu array służy do przechowywania

A. wielu wartości różnego rodzaju
B. wielu wartości lub funkcji
C. wielu wartości tylko tekstowych
D. wielu wartości tylko liczbowych
Obiekt typu array w języku JavaScript jest niezwykle elastycznym narzędziem, które pozwala na przechowywanie wielu wartości dowolnego typu. Arrays mogą zawierać liczby, stringi, obiekty, a nawet inne tablice, w ramach jednego zbioru. Taka struktura danych jest bardzo przydatna w programowaniu, szczególnie w kontekście pracy z danymi, gdyż umożliwia tworzenie kolekcji o zmiennej długości, które można łatwo przetwarzać. Na przykład, w aplikacjach webowych można wykorzystać tablice do grupowania danych z formularzy lub przechowywania wyników zapytań do bazy danych. Dzięki metody takim jak .push(), .pop() czy .map(), programiści mogą łatwo manipulować danymi w tablicach. Ważnym aspektem jest również to, że tablice są obiektami w JavaScript, co oznacza, że można do nich przypisywać dodatkowe właściwości i metody, zwiększając ich funkcjonalność. Przykładem zaawansowanego zastosowania tablic jest wykorzystanie ich do implementacji algorytmów, takich jak sortowanie czy przeszukiwanie danych. Zgodnie z dokumentacją MDN, tablice w JavaScript są dynamiczne, co oznacza, że ich rozmiar może być dostosowywany w czasie działania programu, co czyni je bardzo wszechstronnym narzędziem w pracy programisty.

Pytanie 10

Przedstawiony kod PHP nawiązuje połączenie z serwerem bazy danych. Jakiego typu operacje powinny się znaleźć w instrukcji warunkowej w miejscu trzech kropek?

$db = mysqli_connect("localhost", "root", "qwerty", "baza1");
if (!$db) {
...
}
A. Przetwarzanie danych uzyskanych z bazy
B. Informacja o pomyślnym nawiązaniu połączenia z bazą
C. Obsługa błędu przy nawiązywaniu połączenia
D. Zamknięcie połączenia z bazą danych
Obsługa błędu połączenia jest kluczowym elementem przy nawiązywaniu połączenia z bazą danych w PHP. Gdy używamy funkcji mysqli_connect, istotne jest, aby sprawdzić, czy połączenie zostało nawiązane poprawnie. W przypadku, gdy połączenie nie powiedzie się, funkcja mysqli_connect zwraca fałsz. W takich sytuacjach warto zaimplementować odpowiednią obsługę błędów, aby zrozumieć, co poszło nie tak, oraz działania, które powinny być podjęte. Dobrą praktyką jest wykorzystanie funkcji mysqli_connect_errno oraz mysqli_connect_error, które dostarczają szczegółowych informacji o błędzie. Na przykład, można wyświetlić komunikat o błędzie lub zalogować go do pliku w celu dalszej analizy. W ten sposób programista może szybko zidentyfikować problem, czy to związany z błędnym loginem, hasłem, czy problemami z serwerem bazy danych. Implementacja takiej obsługi błędów zwiększa stabilność aplikacji oraz ułatwia późniejsze diagnozowanie problemów, co jest istotne w profesjonalnym środowisku programistycznym.

Pytanie 11

Instrukcja przypisania elementu do tablicy w języku JavaScript dotyczy tablicy:

Tablica['technik'] = 'informatyk';
A. asocjacyjnej.
B. numerycznej.
C. statycznej.
D. wielowymiarowej.
Najpierw omówmy odpowiedź 'statyczna'. 'Statyczna' tablica to termin, który odnosi się do tablic o stałej wielkości, które nie mogą być dynamicznie zmieniane. W języku JavaScript jednak, tablice są dynamiczne i ich wielkość może być zmieniana w dowolnym momencie. Wybór odpowiedzi 'numeryczna' sugeruje niezrozumienie podstawowych właściwości tablic w JavaScript. Tablice numeryczne są strukturami danych, które używają numerów jako indeksów, ale to nie jest to, co pokazano na zdjęciu - tutaj kluczem jest ciąg znaków. Wybór odpowiedzi 'wielowymiarowa' wskazuje na błędną interpretację przedstawionego obrazu. Tablica wielowymiarowa to tablica tablic, a na zdjęciu pokazano jednowymiarową tablicę asocjacyjną. Pamiętaj, że rozumienie różnych rodzajów tablic i ich zastosowań jest kluczowe dla skutecznego programowania w JavaScript.

Pytanie 12

Przedstawione zapytanie SQL przydziela uprawnienie SELECT

GRANT SELECT ON hurtownia.*
TO 'sprzedawca'@'localhost';
A. dla użytkownika root na serwerze localhost
B. do wszystkich kolumn w tabeli hurtownia
C. dla użytkownika root na serwerze sprzedawca
D. do wszystkich tabel w bazie hurtownia
Polecenie GRANT SELECT ON hurtownia.* pozwala na przyznanie prawa do wykonywania operacji SELECT na wszystkich tabelach w bazie danych hurtownia. Użycie symbolu * po nazwie bazy danych wskazuje na wszystkie tabele w tej konkretnej bazie. Jest to standardowe podejście w systemach zarządzania bazami danych takich jak MySQL, gdzie specyfikacja bazy danych z symbolem * oznacza pełny zakres tabel. Praktycznie oznacza to, że użytkownik ma możliwość przeglądania danych ze wszystkich tabel bez możliwości modyfikacji czy usuwania danych. Takie rozwiązanie stosowane jest często w przypadku ról użytkowników, którzy potrzebują jedynie dostępu do raportowania i analizy danych. Dobre praktyki w zakresie zarządzania uprawnieniami zalecają przydzielanie dokładnie takich praw, jakie są potrzebne do wykonania określonych zadań, co ogranicza ryzyko niepożądanych zmian w bazie danych. Warto zaznaczyć, że precyzyjne zarządzanie prawami dostępu jest kluczowe dla bezpieczeństwa danych w każdej organizacji.

Pytanie 13

Jakim słowem kluczowym można zainicjować zmienną w JavaScript?

A. new
B. variable
C. instanceof
D. var
W języku JavaScript, deklaracja zmiennej przy użyciu słowa kluczowego 'var' jest jednym z podstawowych i fundamentalnych aspektów programowania. Słowo kluczowe 'var' umożliwia tworzenie zmiennych, które mogą przechowywać wartości zarówno typu prymitywnego, jak i obiektowego. Wartością dodaną użycia 'var' jest to, że zmienne zadeklarowane w ten sposób mają zasięg funkcji, co oznacza, że są dostępne w obrębie funkcji, w której zostały zadeklarowane, jak również w zasięgu globalnym, jeśli zostały zdefiniowane poza funkcją. Przykład użycia 'var': var liczba = 10; zmienna 'liczba' jest teraz dostępna w obrębie całej funkcji. Warto również zauważyć, że w nowszych standardach JavaScript, takich jak ECMAScript 6, wprowadzono dodatkowe słowa kluczowe takie jak 'let' i 'const', które oferują bardziej precyzyjny zasięg blokowy i zwiększają bezpieczeństwo kodu. 'Var' pozostaje jednak ważnym elementem do zrozumienia dla każdego programisty JavaScript, ponieważ jest fundamentem, na którym opiera się wiele starszych i nadal używanych skryptów.

Pytanie 14

W JavaScript zapis a++; można przedstawić w inny sposób jako

A. a = a & 1
B. a = a + 1
C. a << 1
D. 1 += a
Odpowiedź 'a = a + 1;' jest poprawna, ponieważ dokładnie odzwierciedla działanie operatora inkrementacji 'a++;'. Operator '++' w JavaScript zwiększa wartość zmiennej o 1. W przypadku użycia 'a = a + 1;', operacja ta jest explicite zapisana jako przypisanie aktualnej wartości 'a' powiększonej o 1. Taki zapis jest często stosowany w sytuacjach, gdy chcemy lepiej zrozumieć, co się dzieje w kodzie, szczególnie dla początkujących programistów. Przykładowo, jeśli mamy zmienną, która przechowuje liczbę, możemy użyć 'a = a + 1;' w pętli, aby zliczać ilość iteracji. Warto zauważyć, że użycie operatora '++' jest bardziej zwięzłe i często preferowane w profesjonalnym kodzie, jednak zrozumienie, jak działa to na poziomie podstawowym, jest kluczowe. Dobrą praktyką jest dbałość o przejrzystość kodu, zwłaszcza w zespołach, gdzie różne osoby mogą pracować nad tym samym projektem.

Pytanie 15

Które z wymienionych oprogramowań NIE jest systemem zarządzania treścią (CMS)?

A. Mambo
B. Apache
C. Joomla
D. WordPress
Pozostałe pozycje to systemy zarządzania treścią. WordPress to najpopularniejszy CMS, używany do blogów i serwisów. Joomla! to kolejny rozbudowany CMS, a Mambo był jego protoplastą. Wszystkie służą do tworzenia i zarządzania zawartością witryn. Apache pełni inną rolę - jest serwerem WWW dostarczającym strony użytkownikom - więc to on nie jest CMS-em, dlatego ta odpowiedź jest poprawna.

Pytanie 16

W jakim języku została napisana podana linia kodu

Ilustracja do pytania
A. PHP
B. Python
C. C#
D. JavaScript
Kod pokazany na obrazku jest zapisany w języku JavaScript. JavaScript jest językiem programowania, który odgrywa kluczową rolę w tworzeniu dynamicznych i interaktywnych stron internetowych. Linia kodu wykorzystuje metodę document.getElementById która jest częścią Document Object Model (DOM) w JavaScript. DOM pozwala na manipulację elementami HTML strony internetowej. W tym wypadku, metoda getElementById odwołuje się do elementu o identyfikatorze paragraf1, a właściwość innerHTML umożliwia zmianę zawartości tego elementu. To podejście jest powszechnie stosowane w celu dynamicznej aktualizacji treści na stronach bez konieczności przeładowania całej strony. Znajomość JavaScriptu pozwala na tworzenie bardziej responsywnych i atrakcyjnych wizualnie aplikacji webowych. JavaScript jest integralną częścią stosu technologii sieciowych i jest szeroko stosowany w praktycznie każdej nowoczesnej witrynie internetowej. Standardy ECMAScript definiują zasady i poprawne użycie JavaScript, co wspiera rozwój profesjonalny i zgodny z dobrymi praktykami.

Pytanie 17

Jak wykonanie zapytania SQL przedstawionego poniżej wpłynie na tabelę pracownicy?

ALTER TABLE pracownicy MODIFY plec char(9);
A. Zmieni typ danych kolumny plec na znakowy o stałej długości 9.
B. Utworzy kolumnę plec o typie znakowym o stałej długości 9.
C. Zmieni typ danych kolumny plec na znakowy o zmiennej długości 9.
D. Utworzy kolumnę plec o typie znakowym o zmiennej długości 9.
Wiele osób może mylnie zakładać, że polecenie SQL ALTER TABLE z instrukcją MODIFY dodaje nową kolumnę, co jest nieprawdziwe. W rzeczywistości, ta instrukcja wprowadza zmiany w już istniejącej kolumnie, a nie tworzy nowej. Pojęcie „dodawania kolumny” odnosi się do instrukcji ADD, a nie MODIFY. Kolejnym błędnym założeniem może być mylenie typów danych - istnieje tendencja do myślenia, że „zmienna długość” oznacza typ char, podczas gdy jest to charakterystyczne dla typu varchar. Typ char jest używany do przechowywania danych o stałej długości, co oznacza, że nawet jeśli przechowywana wartość jest krótsza niż zadana długość, system automatycznie wypełni pozostałe znaki spacjami. Zmiana typu danych na char(9) nie umożliwia przechowywania zmiennych długości danych, a użycie varchar w tym kontekście byłoby właściwsze, gdyby istniała potrzeba przechowywania danych o różnej długości. Wydaje się, że niektórzy mogą też źle interpretować pojęcie „zmiennej długości” i myśleć, że jest to coś, co można przypisać kolumnie typu char, co prowadzi do nieprawidłowych wniosków.

Pytanie 18

Aby sprawdzić, czy kod JavaScript działa poprawnie, należy skorzystać z:

A. kompilatora C++
B. interpretera PERL
C. interpretera PHP
D. konsoli w przeglądarce internetowej
JavaScript jest językiem wykonywanym po stronie klienta, czyli bezpośrednio w przeglądarce internetowej. Dlatego do sprawdzenia, czy kod działa, służy konsola w narzędziach deweloperskich przeglądarki (otwierana zwykle klawiszem F12). Można w niej uruchamiać fragmenty kodu, oglądać wypisane wartości, a przede wszystkim czytać komunikaty o błędach składniowych i logicznych wraz z numerem linii. To podstawowe środowisko testowe front-end developera - i dlatego jest poprawną odpowiedzią.

Pytanie 19

W tabeli o nazwie pracownicy zdefiniowano klucz główny w typie INTEGER z atrybutami NOT NULL oraz AUTO_INCREMENT. Dodatkowo zdefiniowane zostały pola imie oraz nazwisko. W przypadku wykonania podanej kwerendy SQL, która dodaje dane i pomija pole klucza, w bazie danych MySQL nastąpi

INSERT INTO pracownicy (imie, nazwisko)
VALUES ('Anna', 'Nowak');
A. dodanie rekordu do tabeli, dla klucza głównego zostanie przypisana kolejna wartość naturalna
B. błąd związany z niewłaściwą liczbą pól
C. dodanie rekordu do tabeli, dla klucza głównego zostanie przypisana wartość NULL
D. zignorowanie polecenia, tabela nie ulegnie zmianie
W przypadku tabeli z kluczem głównym typu INTEGER z atrybutem AUTO_INCREMENT, kiedy wprowadzamy nowy rekord i pomijamy pole klucza głównego, baza danych MySQL sama automatycznie przydziela kolejną wartość liczbową dla tego pola. AUTO_INCREMENT to mechanizm, który zapewnia, że każdemu nowemu rekordowi przypisana jest unikalna wartość klucza głównego, zaczynając od wartości początkowej, zwykle 1, i zwiększając ją o 1 z każdym nowym rekordem. Jest to niezwykle użyteczne w sytuacjach, gdy zależy nam na unikalności wartości kluczy głównych, co zapewnia integralność danych i unika konieczności ręcznego określania wartości klucza przy każdym nowym wpisie. Takie podejście jest zgodne ze standardami dobrych praktyk, ponieważ minimalizuje ryzyko błędów związanych z duplikacją danych. Przykładowo, jeśli do tabeli pracownicy dodajemy rekord z danymi pracownika, nie musimy się martwić o wartość identyfikatora, co znacznie upraszcza proces zarządzania danymi. Mechanizm AUTO_INCREMENT jest zatem kluczowy w kontekście zarządzania bazami danych, zapewniając automatyzację i integralność danych.

Pytanie 20

Jaką integralność określa przytoczona definicja?

Ilustracja do pytania
A. Referencyjną
B. Encji
C. Statyczną
D. Semantyczną
Integralność encji odnosi się do unikalności danych w tabeli poprzez klucze główne. Jest to fundamentalna koncepcja w relacyjnych bazach danych polegająca na tym że każda encja czyli rekord w tabeli musi być jednoznacznie identyfikowalna. Klucz główny zapewnia tę unikalność co jest niezależne od relacji między tabelami opisywanych przez integralność referencyjną. Pojęcie integralności statycznej odnosi się do stanu danych który nie zmienia się w czasie co nie jest bezpośrednio związane z relacjami pomiędzy tabelami. Integralność statyczna może odnosić się do historycznych danych lub archiwów gdzie dane muszą pozostać niezmienne po ich zarejestrowaniu. Podczas gdy integralność referencyjna dotyczy dynamicznych relacji między różnymi zestawami danych integralność statyczna wiąże się z zachowaniem niezmienności danych w obrębie pojedynczego zbioru. Integralność semantyczna odnosi się natomiast do znaczenia i logiki biznesowej danych. Chodzi o zapewnienie że dane w bazie są zgodne z regułami i założeniami biznesowymi. Na przykład data urodzenia nie może być późniejsza niż data zatrudnienia. Chociaż integralność semantyczna jest ważna dla poprawności danych z punktu widzenia aplikacji biznesowej nie opisuje ona relacji między tabelami w taki sposób jak integralność referencyjna. Właściwe rozumienie tych różnych koncepcji jest kluczowe dla projektowania i utrzymania spójnych i niezawodnych systemów baz danych.

Pytanie 21

Który typ relacji wymaga utworzenia tabeli POŚREDNIEJ łączącej klucze główne obu tabel?

A. 1..1 (jeden-do-jednego)
B. n..1 (wiele-do-jednego)
C. n..m (wiele-do-wielu)
D. 1..n (jeden-do-wielu)
Pozostałe relacje obywają się bez tabeli pośredniej. 1..n (oraz ta sama relacja widziana jako n..1) realizuje klucz OBCY po stronie „wielu”. 1..1 to także klucz obcy z ograniczeniem unikalności. Tabela pośrednia konieczna jest dopiero przy n..m.

Pytanie 22

W języku CSS przedstawione w ramce stylizacje będą miały następujące zastosowanie. Kolorem czerwonym zostanie zapisany

h1 i {color: red;}
A. kompletny tekst nagłówka pierwszego stopnia oraz pochylony tekst akapitu
B. pełny tekst nagłówka pierwszego stopnia oraz cały tekst pochylony, bez względu na jego lokalizację na stronie
C. jedynie tekst pochylony w nagłówku pierwszego stopnia
D. wyłącznie tekst pochylony we wszystkich nagłówkach
Odpowiedź 1 jest poprawna, ponieważ selektor CSS 'h1 i' odnosi się do wszystkich elementów <i> (czyli tekstu pochylonego) znajdujących się wewnątrz elementów nagłówka <h1>. Oznacza to, że tylko tekst pochylony w nagłówkach pierwszego stopnia zostanie sformatowany na kolor czerwony. Jest to przykład selektora złożonego, który jest używany do stylizowania elementów zagnieżdżonych w określonym kontekście. W praktyce, takie podejście pozwala na precyzyjne kontrolowanie stylów na poziomie struktury dokumentu HTML, co jest zgodne z dobrymi praktykami w zakresie utrzymania i czytelności kodu CSS. Podczas projektowania arkuszy stylów ważne jest, aby stosować specyficzne selektory tylko tam, gdzie jest to konieczne, aby uniknąć nadmiernego komplikowania stylów i zapewnić lepszą wydajność renderowania stron w przeglądarkach. Dodatkowo, używając właściwości 'color', możemy definiować sposób, w jaki kolor tekstu prezentuje się na stronie, co jest kluczowe dla tworzenia dostępnych i estetycznych interfejsów użytkownika.

Pytanie 23

Do ilu pól edycyjnych zostanie przypisane tło Teal dla przedstawionego fragmentu dokumentu HTML i stylu CSS?

<input type="text">
<input type="number">
<input type="email">
<input type="number">
<input>

input[type="number"] {
    background-color: Teal;
}
A. Do wszystkich.
B. Do dwóch.
C. Do żadnego.
D. Do trzech.
Bardzo dobrze! Wybrałeś prawidłową odpowiedź, mówiącą, że tło Teal zostanie przypisane do dwóch pól edycyjnych. W przedstawionym fragmencie dokumentu HTML mamy pięć pól edycyjnych (input), z których tylko dwa mają typ 'number'. Tło Teal jest zdefiniowane w stylu CSS i ma być zastosowane tylko do pól typu 'number'. Jest to zgodne z dobrymi praktykami stosowania selektorów atrybutów w CSS, które pozwalają na precyzyjne określenie, do jakich elementów strony internetowej powinien być zastosowany dany styl. Dzięki temu możemy na przykład zastosować różne style dla różnych typów pól wejściowych, jak to jest w tym przypadku. To jest przykład, jak możemy wykorzystać moc CSS do kontroli wyglądu różnych elementów na naszej stronie.

Pytanie 24

Który zapis tworzy w PHP tablicę ASOCJACYJNĄ (z kluczami) i przypisuje ją do zmiennej?

A.
$tab = array(); $tab[] = array(1, 2, 3, 4);
B.
$tab = array("a" => 1, "b" => 2, "c" => 3);
C.
$tab = array(array(1, 2), array(3, 4));
D.
$tab = array(1, 2, 3, 4);
Tablicę asocjacyjną w PHP tworzy się, podając pary klucz => wartość: $tab = array("a" => 1, "b" => 2, "c" => 3);. Każdy element ma wtedy własny, nazwany klucz, po którym się do niego odwołujemy. Dlatego ten zapis jest poprawny.

Pytanie 25

Jak nazywa się model prostej bazy, w której wszystkie dane są w JEDNEJ tabeli?

A. hierarchicznym
B. relacyjnym
C. sieciowym
D. jednorodnym
Najprostszy model bazy, w którym wszystkie dane mieszczą się w JEDNEJ tabeli (bez powiązań), nazywa się jednorodnym (płaskim). Dlatego to model jednorodny.

Pytanie 26

W języku PHP zamieszczono fragment kodu. Plik cookie utworzony przez to polecenie

setcookie("osoba", "Anna Kowalska", time()+(3600*24));
A. zostanie usunięty po jednej godzinie od jego utworzenia
B. będzie przechowywany na serwerze przez jeden dzień
C. będzie przechowywany na serwerze przez jedną godzinę
D. zostanie usunięty po jednym dniu od jego utworzenia
Niepoprawne odpowiedzi na to pytanie opierają się na nieprawidłowym rozumieniu działania funkcji setcookie w PHP, a także na błędnej interpretacji czasu przechowywania plików cookie. Odpowiedzi sugerujące, że plik cookie będzie przechowywany przez jeden dzień lub jedną godzinę, są oparte na mylnych założeniach dotyczących obliczeń czasowych. Czas przechowywania ciasteczka jest określany przez wartość przekazywaną do funkcji setcookie, a w tym przypadku maksymalny czas wynosi 24 godzin. Błędne stwierdzenia mogą wynikać z mylnego założenia, że funkcja time() i dodatkowe sekundy nie są prawidłowo sumowane. Ważne jest, aby zrozumieć, że ciasteczka nie są przechowywane na serwerze, lecz w przeglądarkach użytkowników, co oznacza, że dostępność ich danych zależy od ustawień przeglądarki oraz polityki prywatności. Typowym błędem jest również mylenie pojęć związanych z czasem przechowywania – ciasteczka nie są usuwane w momencie wygaśnięcia, ale po upływie ustalonego czasu, co wyklucza możliwość poprawnych odpowiedzi, które sugerowałyby krótszy okres ich przechowywania. Kluczowym aspektem w pracy z ciasteczkami jest znajomość ich parametrów i ich wpływu na interakcję użytkownika z aplikacją, co może mieć duże znaczenie w kontekście zarządzania sesjami oraz personalizacją doświadczeń użytkownika.

Pytanie 27

Który typ relacji wymaga utworzenia tabeli pośredniczącej, łączącej klucze główne obu tabel?

A.
n..1
B.
1..1
C.
1..n
D.
n..n
Tabelę pośredniczącą, łączącą klucze główne obu tabel, wymaga relacja WIELE-DO-WIELU (n..n) - bez niej nie da się zapisać, że wielu rekordom z jednej tabeli odpowiada wielu z drugiej. Tabela łącząca zamienia jedną relację n..n na dwie relacje 1..n. Zapamiętaj: n..n = dodatkowa tabela z parami kluczy.

Pytanie 28

Która zasada NIE poprawi czytelności kodu?

A. komentarze w trudniejszych fragmentach kodu
B. nazwy zmiennych odzwierciedlają ich przeznaczenie
C. pisanie kodu BEZ wcięć i zbędnych enterów
D. jedna instrukcja w jednej linii
Pytanie szuka zasady, która NIE pomaga. Pisanie kodu bez wcięć i bez podziału na linie sprawia, że struktura bloków staje się nieczytelna - to praktyka SZKODZĄCA czytelności. Dlatego czytelności nie poprawi pisanie kodu bez wcięć i zbędnych enterów.

Pytanie 29

W bazie danych znajduje się tabela o nazwie pracownicy z kolumnami: nazwisko, imię, pensja, wiek. Jak powinna wyglądać składnia polecenia do obliczenia średniej pensji pracowników?

A. select AVG (nazwisko) into pensja
B. select VAR (pracownicy) into pensja
C. select VAR (pensja) from nazwisko
D. select AVG (pensja) from pracownicy
Poprawna odpowiedź, czyli polecenie 'select AVG (pensja) from pracownicy', wykorzystuje funkcję agregującą AVG, która jest standardowo stosowana w SQL do obliczania średniej wartości w kolumnie. W tym przypadku, polecenie to oblicza średnią pensję pracowników zapisanych w tabeli 'pracownicy'. Użycie funkcji AVG jest zgodne z dobrymi praktykami SQL, które zalecają stosowanie odpowiednich funkcji agregujących w celu efektywnego przetwarzania danych. Wartości w kolumnie 'pensja' są analizowane, a wynik zwraca jedną wartość — średnią pensję, co jest niezwykle użyteczne w kontekście raportowania czy analizy wynagrodzeń. Przykładowo, jeśli tabela zawiera pensje 3000, 4000 i 5000, funkcja AVG zwróci 4000. Tego rodzaju zapytania są powszechnie stosowane w raportach kadrowych oraz podczas analizy budżetu w organizacjach, co czyni je niezbędnym elementem wiedzy dla analityków danych oraz programistów baz danych.

Pytanie 30

Jak nazywa się metoda, która pozwala na nawiązanie asynchronicznego połączenia klienta z serwerem oraz umożliwia wymianę danych bez konieczności przeładowania całej strony WWW?

A. AJAX
B. XML
C. VBScript
D. PHP
AJAX, czyli Asynchronous JavaScript and XML, to technika umożliwiająca asynchroniczną komunikację pomiędzy klientem a serwerem bez potrzeby przeładowania całej strony WWW. Umożliwia to tworzenie bardziej responsywnych i interaktywnych aplikacji internetowych. Przykładem zastosowania AJAX może być formularz kontaktowy, który po wypełnieniu wysyła dane do serwera i otrzymuje odpowiedź bez odświeżania całej strony, co poprawia doświadczenie użytkownika. Technologia ta wykorzystuje XMLHttpRequest lub Fetch API do przesyłania i odbierania danych w formacie JSON, co jest bardziej efektywne niż tradycyjne metody. AJAX jest szeroko stosowany w aplikacjach typu single-page, gdzie szybkość i wydajność są kluczowe. Warto również zwrócić uwagę na bezpieczeństwo przy korzystaniu z AJAX, takie jak walidacja danych wejściowych oraz ochrona przed atakami XSS i CSRF, które są standardami w branży.

Pytanie 31

Ile razy należy użyć instrukcji warunkowej, aby wdrożyć w danym języku programowania przedstawiony algorytm?

Ilustracja do pytania
A. Czterokrotnie
B. Trzykrotnie
C. Dwukrotnie
D. Jednokrotnie
Aby prawidłowo zaimplementować algorytm przedstawiony na diagramie, musisz zrozumieć jego strukturę. Diagram pokazuje dwa punkty decyzyjne, co wskazuje na konieczność użycia dwóch instrukcji warunkowych w kodzie. Każda instrukcja warunkowa odpowiada jednemu z tych punktów decyzyjnych. W praktyce, instrukcje warunkowe są kluczowe w programowaniu, pozwalając na podejmowanie decyzji i wykonywanie różnych działań w zależności od spełnienia określonych warunków. Można to zobrazować za pomocą języków programowania takich jak Python czy C++, gdzie 'if', 'else if' oraz 'else' są standardowymi konstrukcjami używanymi do tego celu. Warto zauważyć, że implementując algorytm, należy również zwrócić uwagę na poprawne użycie bloków kodu zagnieżdżonych w instrukcjach warunkowych, co jest dobrą praktyką programistyczną. Dzięki temu kod jest bardziej czytelny i łatwiejszy w utrzymaniu, co jest zgodne z zasadami czystego kodu i standardami branżowymi.

Pytanie 32

Poniżej zaprezentowano fragment kodu w języku HTML:
<ol>
<li>punkt 1</li>
<li>punkt 2</li>
<ul>
<li>podpunkt1</li>
<li>podpunkt2</li>
<li>podpunkt3</li>
</ul>
<li>punkt3</li>
</ol>

A. 1. punkt 1 2. punkt 2 podpunkt1 podpunkt2 podpunkt1 3. punkt3
B. 1. punkt 1 2. punkt 2 3. punkt3 podpunkt1 podpunkt2 podpunkt1
C. 1. punkt 1 2. punkt 2 podpunkt1 podpunkt2 podpunkt3 punkt3
D. punkt 1 punkt 2 podpunkt1 podpunkt2 podpunkt3 punkt3
Widzisz, w niektórych odpowiedziach pojawiły się błędy, które mogą wprowadzać zamieszanie. Na przykład, użycie <il> zamiast <ul> to spory błąd, bo w HTML nie mamy elementu <il>. To może spowodować problemy z wyświetlaniem strony w przeglądarkach. I w paru przypadkach z kolejnością podpunktów było nie tak – pamiętaj, że hierarchia jest ważna. Dobrze zdefiniowane listy powinny mieć swoje konteksty, czyli otaczać je tagami <ol> lub <ul>. Każdy błąd w tym zakresie może utrudnić nawigację po stronie, zwłaszcza dla osób z niepełnosprawnościami. Ogólnie rzecz biorąc, warto dbać o porządek w HTML, bo to jest kluczowe w tworzeniu stron, które są użyteczne i funkcjonalne.

Pytanie 33

Które polecenie usunie z tabeli artykuly wiersze, gdzie pole tresc zawiera „sto” w dowolnym miejscu?

A.
DELETE * FROM artykuly WHERE tresc LIKE "%sto%";
B.
DELETE FROM artykuly WHERE tresc = "%sto%";
C.
DELETE * FROM artykuly WHERE tresc = "%sto%";
D.
DELETE FROM artykuly WHERE tresc LIKE "%sto%";
Dopasowanie fragmentu tekstu wymaga operatora LIKE i znaku %. DELETE FROM artykuly WHERE tresc LIKE "%sto%"; usunie wiersze, w których pole tresc zawiera „sto” w dowolnym miejscu. Dlatego poprawne jest DELETE FROM artykuly WHERE tresc LIKE "%sto%";.

Pytanie 34

W zamieszczonym kodzie PHP, zamiast znaków zapytania powinien być wyświetlony komunikat:

$x = mysql_query('SELECT * FROM mieszkancy');
if (!$x)
    echo '??????????????????????';
A. Niepoprawne hasło do bazy danych
B. Niepoprawna nazwa bazy danych
C. Błąd w trakcie przetwarzania zapytania
D. Zapytanie zostało poprawnie przetworzone
W przedstawionym kodzie PHP, komunikat "??????????????????????" powinien wskazywać na błąd przetwarzania zapytania SQL. Kiedy wynik funkcji mysql_query() jest równy fałszowi (false), oznacza to, że zapytanie nie mogło zostać poprawnie wykonane. Może to być spowodowane różnymi czynnikami, takimi jak błędy w składni zapytania, problemy z połączeniem z bazą danych, lub nieprawidłowe tabele. W tym przypadku, dobrym podejściem jest użycie funkcji mysql_error() w celu uzyskania bardziej szczegółowych informacji na temat natury błędu. Przykład poprawnego kodu mógłby wyglądać tak: <p>$x = mysql_query('SELECT * FROM mieszkancy');<br>If (!$x) {<br>echo mysql_error();<br>}</p> Używanie tej metody pomaga w diagnostyce problemu i pozwala na szybsze jego rozwiązanie. Znalezienie i naprawienie błędów w zapytaniach SQL jest kluczowe w pracy z bazami danych, szczególnie w kontekście aplikacji internetowych, które muszą być niezawodne i efektywne.

Pytanie 35

Na podstawie filmu wskaż, która cecha dodana do stylu CSS zamieni miejscami bloki aside i nav, pozostawiając w środku blok section?

A. nav { float: right; } section { float: right; }
B. nav { float: left; } aside { float: left; }
C. aside {float: left; }
D. nav { float: right; }
Prawidłowa odpowiedź opiera się na tym, jak działają własności float w CSS i w jakiej kolejności przeglądarka renderuje elementy blokowe. Jeśli w dokumencie HTML kolejność znaczników to np. &lt;aside&gt;, potem &lt;section&gt;, a na końcu &lt;nav&gt;, to bez dodatkowego stylowania wszystkie trzy ustawią się pionowo, jeden pod drugim, w tej właśnie kolejności. Dodanie float zmienia sposób, w jaki elementy „odpływają” od normalnego przepływu dokumentu i jak układają się obok siebie.

W stylu nav { float: right; } section { float: right; } sprawiamy, że zarówno nav, jak i section są przesuwane do prawej krawędzi kontenera, natomiast aside (bez float) pozostaje w normalnym przepływie, czyli z lewej strony. Ponieważ przeglądarka układa elementy w kolejności występowania w kodzie, najpierw wyrenderuje aside po lewej, potem section „odpłynie” w prawo, a na końcu nav też „odpłynie” w prawo, ustawiając się po prawej stronie, ale dalej od góry niż section. Efekt wizualny jest taki, że po lewej mamy aside, po prawej nav, a section ląduje między nimi, dokładnie tak jak było pokazane na filmie.

Moim zdaniem to zadanie dobrze pokazuje, że przy floatach zawsze trzeba myśleć o trzech rzeczach naraz: kolejności elementów w HTML, kierunku „pływania” (left/right) oraz o tym, które elementy pozostawiamy w normalnym przepływie. W praktyce w nowoczesnych projektach częściej używa się flexboxa albo CSS Grid do takich układów, bo są czytelniejsze i mniej problematyczne. Przykładowo, zamiast kombinować z float, można by użyć display: flex; na kontenerze i ustawić order dla aside i nav. Float nadal jednak pojawia się w starszych layoutach i w zadaniach egzaminacyjnych, więc warto dobrze rozumieć jego zachowanie, choćby po to, żeby poprawnie modyfikować istniejące style lub naprawiać „rozjechane” układy w starszych projektach.

Pytanie 36

SELECT miasto, AVG(pensja) FROM pracownicy GROUP BY miasto;
Podane zapytanie wybierze:
A. nazwy miast bez powtórzeń oraz sumę pensji dla każdego z nich.
B. nazwy miast bez powtórzeń oraz średnią pensję dla każdego z nich.
C. nazwy miast z powtórzeniami oraz sumę pensji dla każdego z nich.
D. nazwy miast z powtórzeniami oraz średnią pensję dla każdego z nich.
Zapytanie z klauzulą GROUP BY i funkcją AVG bywa mylone z sumowaniem danych lub zwykłym wybieraniem rekordów jeden po drugim. W tym konkretnym przypadku bardzo łatwo pomylić średnią z sumą albo nie zauważyć, że grupowanie usuwa powtórzenia wartości w kolumnie grupującej. Warto to uporządkować. Funkcja AVG(pensja) jest klasyczną funkcją agregującą, której zadaniem jest obliczenie średniej arytmetycznej z wartości w danej grupie rekordów. Nie dodaje ona wszystkich pensji „na kupę” tak jak SUM, tylko dzieli ich sumę przez liczbę rekordów w grupie. Jeżeli ktoś spodziewa się sumy, to patrzy bardziej w stronę SUM(pensja), a nie AVG(pensja). To jest typowy błąd: widzimy funkcję agregującą i automatycznie myślimy „to pewnie suma”, bez dokładnego przeczytania nazwy funkcji. Druga kwestia to powtórzenia miast. Klauzula GROUP BY miasto mówi silnikowi bazy danych: pogrupuj wszystkie wiersze według wartości w kolumnie miasto. W efekcie wszystkie rekordy z tym samym miastem są łączone w jedną grupę. Dla każdej takiej grupy zwracany jest dokładnie jeden wiersz wyniku. To oznacza, że w rezultacie zapytania nie ma powtórzonych nazw miast, nawet jeśli w tabeli jest tysiąc pracowników z Warszawy czy Krakowa. Częsty błąd myślowy polega na przenoszeniu intuicji z prostego SELECT bez GROUP BY, gdzie miasto faktycznie się powtarza, na zapytanie z agregacją, gdzie logika jest już inna. W odpowiedziach, które sugerują „z powtórzeniami”, ignorowane jest działanie GROUP BY. Z kolei odpowiedzi mówiące o „sumie pensji” mylą AVG z SUM, co w praktyce może prowadzić do bardzo poważnych błędów analitycznych – wyobraź sobie raport płacowy, w którym zamiast średniej ktoś pokaże sumę wynagrodzeń i na tej podstawie będzie porównywał miasta. Moim zdaniem dobrą praktyką jest zawsze czytanie zapytania fragment po fragmencie: najpierw jakie kolumny są wybierane, potem jakie funkcje agregujące są użyte, a na końcu po czym następuje grupowanie. Taka metoda pozwala uniknąć właśnie takich nieporozumień i lepiej rozumieć, co dokładnie zwróci baza danych, co jest kluczowe przy pracy z realnymi systemami produkcyjnymi.

Pytanie 37

Która technologia zapewnia SZYFROWANE połączenie ze stroną (HTTPS)?

A. FTP
B. CMS
C. SSL
D. SEO
Szyfrowane połączenie ze stroną (HTTPS) zapewnia technologia SSL (dziś jej następca TLS) - szyfruje dane przesyłane między przeglądarką a serwerem, tak że przechwycone w drodze są nieczytelne, oraz potwierdza tożsamość witryny certyfikatem. Dlatego za HTTPS odpowiada SSL.

Pytanie 38

Domyślna CAPTCHA
CAPTCHA - reCAPTCHA

W CMS Joomla! opcja konfiguracji globalnej, pokazana na ilustracji, służy do
A. wyświetlania okna informującego o zgodzie użytkownika na pliki cookie.
B. zapobiegania atakom typu SQL Injection.
C. dopuszczenia do przesyłania danych z formularzy wypełnionych tylko przez człowieka.
D. wyświetlenia okna umożliwiającego wyszukiwanie tekstu na stronie.
Opcja pokazana na zrzucie w Joomla! dotyczy domyślnej CAPTCHA, czyli mechanizmu weryfikującego, czy formularz wypełnia człowiek, a nie automat (bot). W praktyce, gdy w konfiguracji globalnej wybierzesz np. „CAPTCHA – reCAPTCHA”, Joomla! będzie mogła używać tego mechanizmu we wszystkich formularzach, które potrafią z CAPTCHA współpracować, np. formularz rejestracji użytkownika, formularz kontaktowy, czasem logowanie czy dodawanie komentarzy w rozszerzeniach.

CAPTCHA działa tak, że dodaje do formularza dodatkowy krok: użytkownik musi zaznaczyć odpowiednie pole („Nie jestem robotem”) albo rozwiązać proste zadanie typu rozpoznanie obrazków. Po stronie serwera (tu: Joomla! + Google reCAPTCHA) sprawdzany jest specjalny token. Jeżeli token jest poprawny, dane z formularza są przyjmowane. Jeżeli nie – formularz jest odrzucany. Dzięki temu znacząco ogranicza się spam, masowe rejestracje fałszywych kont i automatyczne wysyłki z formularzy.

Moim zdaniem w każdym publicznym formularzu, szczególnie na stronach firmowych czy szkolnych, warto mieć poprawnie skonfigurowaną CAPTCHA. To jest jeden z podstawowych elementów dobrych praktyk bezpieczeństwa aplikacji webowych – obok filtrowania danych, ograniczania liczby żądań czy stosowania firewalli aplikacyjnych (WAF). Sama CAPTCHA nie zastąpi innych zabezpieczeń, ale bardzo skutecznie zmniejsza liczbę automatycznych ataków i spamu.

W Joomla! konfiguracja globalna jest o tyle wygodna, że ustawiasz raz domyślny typ CAPTCHA, a potem w poszczególnych komponentach (np. „Użytkownicy”, „Kontakty”) tylko zaznaczasz, że chcesz jej używać. W praktyce oznacza to, że formularze będą przyjmować dane tylko wtedy, gdy człowiek poprawnie przejdzie test CAPTCHA – dokładnie tak, jak opisuje poprawna odpowiedź.

Pytanie 39

W sekcji nagłówka dokumentu HTML umieszczono

<title>Strona miłośników psów</title>
Zawarty tekst będzie widoczny
A. w treści witryny, w pierwszym ukazanym nagłówku
B. na pasku tytułu w przeglądarce
C. w polu adresowym, za wprowadzonym adresem URL
D. w treści witryny, na banerze witryny
Wybór odpowiedzi, która sugeruje, że tytuł strony wyświetlany jest w treści strony, jest błędny. Tytuł nie jest częścią treści, na przykład w nagłówku, ani nie jest umieszczany na banerze witryny, co sugeruje inna odpowiedź. Tytuł strony jest wyświetlany na pasku tytułu przeglądarki, a jego podstawowym zadaniem jest identyfikacja strony w kontekście użytkowania przeglądarki. Błędne założenie, że tytuł może być częścią treści strony, wynika z nieporozumienia dotyczącego struktury dokumentu HTML oraz roli, jaką różne elementy odgrywają w prezentacji stron. Tytuł jest istotnym elementem metadanych, co oznacza, że nie jest przeznaczony do bezpośredniego wyświetlania na stronie, ale ma kluczowe znaczenie dla SEO oraz ułatwienia nawigacji. Właściwe zrozumienie roli tagu <title> jest kluczowe, aby uniknąć typowych błędów w tworzeniu witryn internetowych, takich jak używanie wygenerowanych tytułów, które mogą być zbyt ogólne lub mylące dla użytkowników oraz wyszukiwarek. W praktyce, tytuły stron powinny być odzwierciedleniem ich zawartości, co zwiększa ich użyteczność i efektywność w przyciąganiu odwiedzających.

Pytanie 40

Znacznik <ins> w HTML jest używany do wskazywania

A. cytowanego fragmentu tekstu
B. tekstu, który został usunięty
C. tekstu, który został przeformatowany
D. tekstu, który został dodany
Wybierając błędne odpowiedzi, pokazujesz, że coś może być niejasne, jeśli chodzi o znaczniki HTML. Na przykład, myślenie, że <ins> to znacznik do oznaczania cytatów, to pomyłka. Do tego zadania służy <blockquote> albo <q>, które mają swoje własne, zupełnie inne znaczenie. Jeśli wybrałeś opcję mówiącą o oznaczaniu usuniętego tekstu, to też jest błąd, bo do tego mamy znacznik <del>. A użycie <ins> w kontekście zmiany formatu tekstu to jeszcze jedna pomyłka, bo ten znacznik nie mówi nic o formatowaniu. Tak naprawdę, <ins> tylko wskazuje nowe fragmenty tekstu, a nie zmienia ich stylu. Jeżeli nie rozumiesz tych funkcji różnych znaczników HTML, to łatwo można wpaść w pułapkę błędów w kodzie, co później będzie miało wpływ na semantykę stron oraz ich dostępność. Dlatego tak ważne jest, żeby znać różnice między tymi znacznikami i korzystać z nich, jak należy.