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: 11 kwietnia 2026 17:28
  • Data zakończenia: 11 kwietnia 2026 17:44

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

W relacyjnym modelu baz danych, termin krotka odnosi się do

A. wierszy tabeli, z wyjątkiem wiersza nagłówkowego, w którym znajdują się nazwy kolumn
B. wszystkich kolumn tabeli, które zawierają atrybuty danego obiektu
C. liczby rekordów w danej tabeli
D. wszystkich wierszy tabeli łącznie z wierszem nagłówkowym
W relacyjnym modelu baz danych, krotka odnosi się do jednego wiersza tabeli, który przechowuje zestaw atrybutów (kolumn) dla danego obiektu. Każda krotka jest zbiorem wartości, które są powiązane z określonymi kolumnami. Krotki stanowią fundamentalny element relacyjnych baz danych, w których dane są zorganizowane w formie tabel, co ułatwia ich przechowywanie, przetwarzanie oraz zapytania. Na przykład, w tabeli przechowującej informacje o klientach, każda krotka mogłaby zawierać dane takie jak imię, nazwisko, adres e-mail i numer telefonu. Wartości te są ze sobą powiązane i tworzą kompletny zestaw informacji dotyczący jednego klienta. Zgodnie z normami SQL, krotki są często przetwarzane za pomocą instrukcji SELECT, które umożliwiają pobieranie, modyfikację i zarządzanie danymi na poziomie pojedynczych wierszy. Krotki są nie tylko podstawą struktury danych, ale również fundamentem, na którym opierają się operacje na bazach danych, co czyni je kluczowym pojęciem w projektowaniu oraz zarządzaniu relacyjnymi bazami danych.

Pytanie 2

W PHP typ float oznacza

A. typ łańcuchowy
B. typ zmiennoprzecinkowy
C. typ całkowity
D. typ logiczny
W języku PHP typ 'float' jest używany do reprezentacji liczb zmiennoprzecinkowych, co oznacza, że może on przechowywać liczby z częścią dziesiętną. Jest to kluczowy element programowania, ponieważ pozwala na bardziej precyzyjne obliczenia, które są niezbędne w wielu zastosowaniach, takich jak obliczenia finansowe czy analizy naukowe. Dzięki użyciu typu float, programiści mogą używać skomplikowanych algorytmów, które wymagają operacji na liczbach niecałkowitych. W praktyce, kiedy potrzebujemy obliczyć ceny z podatkiem lub odsetkami, użycie float pozwala na dokładniejsze wyniki niż w przypadku typów całkowitych. Należy również pamiętać, że przy pracy z typem float warto stosować funkcje takie jak round(), aby uniknąć problemów z precyzją wyników, które mogą wynikać z ograniczeń reprezentacji liczb zmiennoprzecinkowych w pamięci komputera. Warto także zaznaczyć, że zgodnie z dokumentacją PHP, float jest zgodny z standardem IEEE 754, co zapewnia jego szeroką kompatybilność z innymi systemami oraz językami programowania.

Pytanie 3

W języku JavaScript, w celu przekształcenia specjalnie przygotowanego tekstu w tablicę, można wykorzystać metodę

A. trim()
B. replace()
C. split()
D. slice()
Użycie metod takich jak trim(), replace() czy slice() w kontekście zamiany tekstu na tablicę jest nieprawidłowe z kilku powodów. Metoda trim() służy do usuwania białych znaków (spacji, tabulatorów itp.) z początku i końca ciągu znaków. Choć jest to przydatne w wielu sytuacjach, nie ma ona żadnego wpływu na strukturę samego tekstu, a tym samym nie może być używana do przekształcania ciągu w tablicę. Z kolei replace() jest metodą, która zastępuje podciąg w łańcuchu, ale nie dzieli go na elementy. Na przykład, użycie replace() na ciągu "Jan,Kasia,Piotr" z celem uzyskania tablicy spowoduje, że nadal będziemy mieć jeden łańcuch, w którym nie będą mogły wystąpić oddzielne elementy. Natomiast metoda slice() służy do wycinania określonej części łańcucha, co również nie prowadzi do generowania tablicy. Powszechnym błędem myślowym jest założenie, że te metody mogą spełniać funkcję podziału tekstu, podczas gdy ich rzeczywiste zastosowanie jest zupełnie inne. W praktyce, stosując metody, które nie są przeznaczone do dzielenia tekstu, programiści mogą napotkać problemy z wydajnością i czytelnością kodu, co jest sprzeczne z zasadami dobrego programowania. Zrozumienie różnicy między tymi metodami oraz ich odpowiednim zastosowaniem jest kluczowe dla efektywnej pracy z danymi tekstowymi i zapewnia, że procesy przetwarzania informacji w aplikacjach są zarówno efektywne, jak i łatwe do utrzymania.

Pytanie 4

Z tabeli należy wybrać imiona osób, które spełniają kryterium, że drugą literą jest 'e', a słowo ma co najmniej 5 znaków (pięć lub więcej znaków). W tym celu w klauzuli WHERE można użyć wyrażenia

A. imie LIKE '_e___%' (po literze e trzy podkreślniki)
B. imie LIKE '_e_%'
C. imie LIKE '_e___' (po literze e trzy podkreślniki)
D. imie LIKE '%e%'
Odpowiedź 4 jest poprawna, ponieważ stosuje wyrażenie LIKE w sposób, który precyzyjnie spełnia zadany warunek. Wyrażenie '_e___%' wskazuje, że imię musi mieć co najmniej pięć znaków, gdzie 'e' jest drugą literą. Podkreślnik '_' pełni rolę symbolu zastępczego dla pojedynczego znaku, więc '_e___' oznacza, że przed literą 'e' może znajdować się jeden dowolny znak, a po niej co najmniej trzy znaki. Znak '%' na końcu oznacza, że po tych pięciu znakach mogą występować dodatkowe znaki, co jest zgodne z wymogiem, aby długość imienia wynosiła co najmniej pięć znaków. Przykłady zastosowania tego wyrażenia obejmują zapytania do baz danych, gdzie chcemy uzyskać imiona takie jak 'Marek', 'Tereska' czy 'Petrus'. Tego rodzaju zapytania są zgodne z dobrymi praktykami SQL, które podkreślają znaczenie precyzyjnych warunków wyszukiwania dla optymalizacji i ograniczenia zbiorów danych, co przekłada się na większą efektywność operacji. W kontekście projektowania baz danych, stosowanie takich precyzyjnych kryteriów w zapytaniach jest kluczowe dla zapewnienia szybkości i efektywności systemów bazodanowych, co jest istotne w dzisiejszych zastosowaniach biznesowych, gdzie czas odpowiedzi jest niezwykle ważny.

Pytanie 5

Jakie uprawnienia są wymagane do tworzenia i przywracania kopii zapasowej bazy danych Microsoft SQL Server 2005 Express?

A. Użytkownik lokalny.
B. Użytkownicy zabezpieczeń.
C. Użytkownicy.
D. Administrator systemu.
Odpowiedzi wskazujące na 'Users', 'Security users' oraz 'Użytkownik lokalny' nie są poprawne w kontekście wymagań dotyczących wykonywania i odtwarzania kopii zapasowych w Microsoft SQL Server 2005 Express. Użytkownicy z rolą 'Users' mają ograniczone uprawnienia, które nie pozwalają im na wykonywanie operacji administracyjnych, takich jak tworzenie kopii zapasowych. Ich uprawnienia koncentrują się głównie na korzystaniu z danych i wykonywaniu zapytań, co nie obejmuje operacji związanych z bezpieczeństwem i zarządzaniem danymi. Podobnie, rola 'Security users' obejmuje uprawnienia związane z bezpieczeństwem, jednak nie daje możliwości zarządzania bazami danych w pełnym zakresie. Tego typu użytkownicy mogą mieć dostęp do niektórych funkcji związanych z bezpieczeństwem, ale nie są w stanie wykonywać krytycznych operacji takich jak tworzenie kopii zapasowych. Użytkownik lokalny, z kolei, odnosi się do systemowych użytkowników, którzy mają dostęp do komputera lokalnego, ale ich uprawnienia w kontekście Microsoft SQL Server 2005 Express są ograniczone i nie obejmują funkcji administracyjnych niezbędnych do zarządzania bazami danych. W praktyce, aby zapewnić odpowiednie bezpieczeństwo i integralność danych, konieczne jest, aby do operacji związanych z kopiami zapasowymi byli upoważnieni jedynie użytkownicy z pełnymi uprawnieniami administracyjnymi, co w tym przypadku odnosi się do roli administratora systemu.

Pytanie 6

Aby obraz w filmie zmieniał się gładko, liczba klatek (niezachodzących na siebie) w ciągu sekundy musi mieścić się przynajmniej w zakresie

A. 24 do 30 fps
B. 20 do 23 fps
C. 16 do 19 fps
D. 31 do 36 fps
Odpowiedź '24 do 30 fps' jest na miejscu, bo w tym zakresie klatki na sekundę zapewniają naprawdę płynny obraz w filmach. Standard to 24 fps, co uznaje się za minimalną liczbę klatek, aby widzowie widzieli ruch jako gładki, a nie poskakujący. W praktyce w telewizji oraz przy niektórych formatach wideo można spotkać się z 30 fps, co jeszcze bardziej poprawia wrażenia wizualne. Warto tu wspomnieć, że wiele produkcji, zwłaszcza animacji, trzyma się tych standardów. Na przykład, filmy animowane z 24 fps mają dobrą dynamikę, ale w transmisjach sportowych często korzysta się z 30 fps, żeby lepiej uchwycić szybko poruszające się obiekty. Ostatecznie, trzymanie się tych standardów w filmach i telewizji to klucz do dobrego odbioru wizualnego.

Pytanie 7

W języku PHP nie można wykonać

A. Tworzenia dynamicznej treści strony
B. Obsługiwania danych z formularzy
C. Dynamicznej zmiany treści strony HTML w przeglądarce
D. Operacji na danych zgromadzonych w bazie danych
Przetwarzanie danych formularzy, przetwarzanie danych zgromadzonych w bazie danych oraz generowanie dynamicznej zawartości strony to wszystkie operacje, które PHP wykonuje na serwerze. Przetwarzanie danych formularzy jest jednym z podstawowych zastosowań PHP; skrypty PHP odbierają dane wysłane przez użytkowników, wykonują na nich różne operacje, takie jak walidacja czy zabezpieczenie, a następnie mogą zapisywać je w bazie danych lub wykorzystywać do generowania odpowiedzi. Korzystając z PHP, programiści mogą łączyć się z bazami danych, takimi jak MySQL, aby przetwarzać duże ilości danych. To pozwala na dynamiczne generowanie treści na stronie w odpowiedzi na zapytania użytkowników, co czyni aplikacje bardziej interaktywnymi. Generowanie dynamicznej zawartości oznacza, że na podstawie danych wejściowych PHP może tworzyć różnorodne widoki, które są dostosowane do potrzeb użytkowników. Często jednak zapomina się, że przetwarzanie tych danych i generowanie odpowiedzi odbywa się jedynie na etapie serwera, co ogranicza jego zdolność do reagowania na zmiany w czasie rzeczywistym na stronie bez ponownego załadowania. To prowadzi do mylnego wrażenia, że PHP może również zmieniać zawartość strony w przeglądarce, co nie jest prawdą. Do osiągnięcia takich efektów konieczne jest wykorzystanie języków skryptowych działających po stronie klienta, takich jak JavaScript, które są odpowiedzialne za interakcję z DOM i dynamiczne modyfikowanie treści wyświetlanej użytkownikowi.

Pytanie 8

Jakie narzędzie jest używane do organizowania oraz przedstawiania danych z wielu rekordów w celu ich wydruku lub dystrybucji?

A. raport
B. makropolecenie
C. formularz
D. kwerenda
Raport to narzędzie, które umożliwia zgrupowanie i prezentowanie informacji z wielu rekordów, co jest kluczowe w kontekście analizy danych oraz podejmowania decyzji biznesowych. Tworzenie raportów pozwala na syntetyzowanie informacji, co sprawia, że są one bardziej zrozumiałe dla odbiorców. W praktyce raporty mogą być wykorzystywane do monitorowania wyników sprzedaży, analiz finansowych, badań rynkowych czy oceny efektywności działań marketingowych. Dzięki zastosowaniu narzędzi do raportowania, takich jak systemy Business Intelligence, możliwe jest generowanie szczegółowych zestawień oraz wizualizacji, które wspierają decyzje strategiczne. Dobre praktyki w zakresie raportowania obejmują jasne definiowanie celów raportu, dobór odpowiednich wskaźników KPI oraz zastosowanie wizualizacji danych, co pozwala na lepsze zrozumienie przedstawianych informacji. W kontekście standardów branżowych, raporty powinny być tworzone zgodnie z zasadami klarowności, precyzji i adekwatności, aby skutecznie odpowiadały na potrzeby użytkowników.

Pytanie 9

Aby zidentyfikować błędy w składni kodu HTML, trzeba użyć

A. walidatora
B. interpretera
C. debuggera
D. kompilatora
Walidator to narzędzie służące do sprawdzania poprawności składniowej oraz semantycznej kodu HTML. Umożliwia on programistom wychwycenie błędów, które mogą prowadzić do problemów z wyświetlaniem strony internetowej w przeglądarkach. Walidatory, takie jak W3C Validator, analizują kod HTML pod kątem zgodności z aktualnymi standardami oraz najlepszymi praktykami. Na przykład, walidator może wykryć brakujące tagi, niewłaściwe atrybuty czy błędne zagnieżdżenie elementów. Przy pomocy walidatora można również sprawdzić, czy strona jest dostosowana do wymagań dotyczących dostępności i użyteczności. Używanie walidatorów jest kluczowe w procesie tworzenia stron internetowych, ponieważ pozwala na identyfikację i eliminację błędów przed opublikowaniem witryny. W ten sposób projektanci i deweloperzy mogą zapewnić, że ich strony będą działały prawidłowo na różnych urządzeniach i przeglądarkach, co jest istotne dla doświadczenia użytkowników oraz SEO.

Pytanie 10

W języku PHP wykonano poniższą operację. Aby uzyskać wszystkie rezultaty tego zapytania, należy:

$tab = mysqli_query($db, "SELECT imie FROM Osoby WHERE wiek < 18");
A. zaindeksować zmienną tab, tab[0] to pierwsze imię
B. wyświetlić zmienną $db
C. zastosować pętlę z poleceniem mysqli_fetch_row
D. użyć polecenia mysql_fetch
Odpowiedź, która zakłada zastosowanie pętli z poleceniem mysqli_fetch_row, jest poprawna, ponieważ po wykonaniu zapytania do bazy danych za pomocą mysqli_query, otrzymujemy wynik w postaci zestawu rekordów, który musimy przetworzyć. Funkcja mysqli_fetch_row pozwala na iteracyjne pobieranie wierszy z tego zestawu, co jest niezbędne do wyświetlenia wszystkich imion osób, które spełniają warunek wieku poniżej 18 lat. Przykładowy kod do iteracji może wyglądać tak: while($wiersz = mysqli_fetch_row($tab)) { echo $wiersz[0]; } W ten sposób każda iteracja w pętli wyświetli pierwszą kolumnę (imie) z każdego wiersza rezultatu. Tego typu podejście jest zgodne z dobrymi praktykami, ponieważ pozwala na efektywne zarządzanie pamięcią i ogranicza ryzyko przeciążenia systemu, szczególnie w przypadku dużych zbiorów danych. Ważne jest, aby pamiętać, że połączenie z bazą danych i zapytania powinny być zawsze odpowiednio zamykane i zabezpieczane przed atakami, co jest istotne w kontekście bezpieczeństwa aplikacji.

Pytanie 11

W PHP, przy wykonywaniu działań na bazie danych MySQL, aby zakończyć sesję z bazą, należy użyć

A. mysqli_commit();
B. mysqli_exit();
C. mysqli_close();
D. mysqli_rollback();
Funkcja mysqli_close() jest właściwym sposobem na zakończenie pracy z połączeniem do bazy danych MySQL w języku PHP. Użycie tej funkcji zwalnia zasoby skojarzone z danym połączeniem, co jest kluczowe w kontekście wydajności aplikacji. Po zakończeniu operacji na bazie danych, zwłaszcza w przypadku aplikacji intensywnie korzystających z zasobów, takich jak serwery webowe, ważne jest, aby zamknąć połączenie, aby uniknąć wycieków pamięci oraz ograniczyć liczbę otwartych połączeń. Przykładowo, po wykonaniu zapytań do bazy danych, stosując mysqli_close($connection), gdzie $connection to uchwyt do otwartego połączenia, można skutecznie zakończyć interakcję z bazą. Dobrą praktyką jest zamykanie połączeń w blokach finally, aby upewnić się, że zasoby są zwalniane nawet w przypadku wystąpienia wyjątków. Kiedy zamykasz połączenie, pamiętaj, że nie będziesz w stanie już korzystać z tego uchwytu połączenia, co jest zgodne z filozofią zarządzania zasobami, gdzie każdy otwarty zasób powinien być odpowiednio zamykany po zakończeniu jego użycia.

Pytanie 12

W semantycznym HTML odpowiednikiem elementu <b>, który nie tylko pogrubia tekst, ale także wskazuje na jego większe znaczenie, jest

A. <ins>
B. <em>
C. <strong>
D. <mark>
Znacznik <strong> w HTML semantycznym służy nie tylko do pogrubienia tekstu, ale także do wskazania, że dany fragment ma większe znaczenie w kontekście semantycznym. Zgodnie z zaleceniami W3C, użycie tego znacznika poprawia dostępność treści, ponieważ technologie wspomagające, takie jak czytniki ekranu, interpretują <strong> jako tekst o podwyższonej wadze, co może pomóc w lepszym zrozumieniu struktury dokumentu przez osoby z niepełnosprawnościami. Przykładem zastosowania może być podkreślenie ważnych informacji na stronie, takich jak zasady, ostrzeżenia czy kluczowe dane, które użytkownicy powinni zauważyć. W praktyce, stosowanie elementów semantycznych, takich jak <strong>, zamiast czysto stylistycznych, jest zgodne z zasadami budowania stron przyjaznych dla użytkowników i poprawia SEO, ponieważ wyszukiwarki mogą lepiej analizować kontekst treści. Warto pamiętać, że w przypadku użycia <strong>, nie zmienia to tylko sposobu wyświetlania, ale także wzbogaca znaczenie tekstu w kontekście całej strony.

Pytanie 13

Styl ten generuje pojedyncze obramowanie, które charakteryzuje się następującymi właściwościami:

border: solid 1px;
border-color: red blue green yellow;
A. krawędź górna jest czerwonego koloru, krawędź lewa jest w kolorze niebieskim, krawędź dolna ma kolor zielony, krawędź prawa ma kolor żółty
B. krawędź górna ma kolor czerwony, krawędź prawa jest w kolorze niebieskim, krawędź dolna ma kolor zielony, krawędź lewa jest koloru żółtego
C. krawędź prawa jest koloru czerwonego, krawędź dolna ma kolor niebieski, krawędź lewa ma kolor zielony, krawędź górna ma kolor żółty
D. krawędź lewa ma kolor czerwony, krawędź dolna jest w kolorze niebieskim, krawędź prawa jest koloru zielonego, krawędź górna ma kolor żółty
Podana odpowiedź jest prawidłowa, ponieważ opisuje właściwe przypisanie kolorów do krawędzi obramowania według standardów CSS. W zapisie border-color: red blue green yellow; kolory są przypisywane zgodnie z kierunkiem wskazówek zegara, zaczynając od góry. Zatem krawędź górna jest koloru czerwonego, prawa koloru niebieskiego, dolna zielonego, a lewa żółtego. Jest to zgodne z praktykami projektowania stron internetowych, gdzie priorytetem jest zrozumiała i spójna struktura kodu. W praktyce takie zrozumienie pozwala na efektywne tworzenie stylów w CSS, przyspieszając proces tworzenia responsywnych i estetycznych interfejsów użytkownika. Wiedza o przypisywaniu kolorów do krawędzi jest przydatna w tworzeniu zaawansowanych układów graficznych, pozwalając na lepsze wykorzystanie przestrzeni wizualnej i wprowadzenie unikalnych elementów stylistycznych. Takie podejście do CSS jest zgodne z nowoczesnymi standardami projektowania, które kładą nacisk na czytelność i efektywność kodu oraz zapewniają lepsze doświadczenia użytkownika.

Pytanie 14

W bazie danych znajduje się tabela uczniowie z kolumnami: imie, nazwisko, klasa. Jakie polecenie SQL należy wykorzystać, aby znaleźć imiona oraz 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 = 'M%';
C. SELECT nazwisko, imie FROM uczniowie ORDER BY nazwisko IN 'M%';
D. SELECT nazwisko, imie FROM uczniowie WHERE nazwisko LIKE 'M%';
Wybrana odpowiedź jest poprawna, ponieważ używa operatora LIKE, który jest standardowym rozwiązaniem w SQL do wyszukiwania wzorców w danych. W tym przypadku 'M%' oznacza, że chcemy znaleźć wszystkie nazwiska, które zaczynają się na literę M. Operator LIKE jest szczególnie przydatny w sytuacjach, gdy potrzebujemy elastycznego wyszukiwania, umożliwiającego zastosowanie symboli wieloznacznych, takich jak '%' oznaczający dowolną liczbę znaków. Przykład zastosowania tego zapytania może obejmować generowanie listy uczniów dla nauczycieli, którzy chcą szybko zobaczyć wszystkich uczniów z nazwiskiem zaczynającym się na M, co może być przydatne przy organizowaniu wydarzeń czy klas. Dobrą praktyką jest także używanie odpowiednich indeksów w bazie danych, co może znacznie przyspieszyć wykonanie zapytań, zwłaszcza w dużych zbiorach danych. Znajomość operatorów SQL i ich zastosowań, jak również umiejętność formułowania zapytań, jest kluczowa w pracy z relacyjnymi bazami danych.

Pytanie 15

Zdefiniowany styl CSS spowoduje, że nagłówki pierwszego poziomu będą

Ilustracja do pytania
A. wyśrodkowane, pisane wielkimi literami, a odstępy między literami ustalone na 10 px
B. wyjustowane, pisane wielkimi literami, a odstępy między liniami ustalone na 10 px
C. wyjustowane, pisane małymi literami, a odstępy między literami ustalone na 10 px
D. wyśrodkowane, pisane małymi literami, a odstępy między liniami ustalone na 10 px
Odpowiedź jest prawidłowa, ponieważ reguły CSS wyrażone w stylu są poprawnie zinterpretowane w kontekście podanej definicji. Wartość text-align: center oznacza, że tekst wewnątrz elementu h1 będzie wyśrodkowany. Centrum tekstu jest powszechnie stosowane w projektowaniu stron internetowych w celu zwiększenia czytelności i estetyki nagłówków co jest korzystne w wizualnym uporządkowaniu treści. Wartość text-transform: uppercase przekształca wszystkie litery w sekcji na wielkie litery co jest pomocne w przypadku nagłówków gdzie wyróżnienie jest kluczowe i potęguje efekt wizualny. Stosowanie wielkich liter w nagłówkach jest klasycznym podejściem w projektowaniu ponieważ przyciąga uwagę użytkownika. Dodatkowo letter-spacing: 10px zwiększa odstępy między literami co poprawia ich czytelność zwłaszcza w dużych formatach tekstu. Zastosowanie takich właściwości jest zgodne z dobrymi praktykami projektowymi które dążą do optymalizacji wizualnej i funkcjonalnej stron internetowych co jest kluczowe dla pozytywnego doświadczenia użytkownika

Pytanie 16

Jaki jest prawidłowy sposób deklaracji funkcji w języku JavaScript?

A. function myFunction() { }
B. def myFunction() { }
C. func myFunction() { }
D. void myFunction() { }
Deklaracja funkcji w JavaScript zaczyna się od słowa kluczowego <code>function</code>, po którym następuje nazwa funkcji, nawiasy okrągłe oraz nawiasy klamrowe obejmujące ciało funkcji. Przykładowo, <code>function myFunction() { }</code> tworzy funkcję o nazwie <em>myFunction</em>, która nie przyjmuje żadnych parametrów i nie wykonuje żadnych operacji, gdyż ciało funkcji jest puste. W JavaScript funkcje są fundamentalnym elementem, który pozwala na tworzenie modularnego i wielokrotnego użycia kodu. Można je wywoływać w dowolnym miejscu programu, co ułatwia zarządzanie złożonością kodu. Zgodnie z dobrymi praktykami, nazwy funkcji powinny być opisowe, aby jasno wskazywały na ich działanie. Warto również pamiętać, że w JavaScript funkcje są pierwszoklasowymi obiektami, co oznacza, że mogą być przypisywane do zmiennych, przekazywane jako argumenty do innych funkcji, czy zwracane jako wyniki funkcji. To sprawia, że JavaScript jest bardzo elastycznym językiem do programowania złożonych aplikacji webowych.

Pytanie 17

Aby naprawić tabelę w bazie danych MySQL, należy użyć polecenia

A. REPAIR TABLE
B. CHANGE TABLE
C. UPDATE TABLE
D. FIX TABLE
Prawidłowe polecenie w MySQL do naprawy uszkodzonej lub niespójnej tabeli to `REPAIR TABLE`. Jest to oficjalna, udokumentowana komenda SQL w MySQL, przeznaczona właśnie do diagnozowania i naprawiania problemów z tabelami, głównie w silniku MyISAM, a w ograniczonym zakresie także w innych silnikach. W praktyce używa się jej np. gdy tabela nagle „znika” z widoku aplikacji, pojawiają się błędy typu „table is marked as crashed and should be repaired” albo gdy phpMyAdmin zgłasza problemy z integralnością danych na poziomie pliku tabeli. Typowe użycie wygląda tak: `REPAIR TABLE nazwa_tabeli;` albo z dodatkowymi opcjami, np. `REPAIR TABLE nazwa_tabeli QUICK;` czy `REPAIR TABLE nazwa_tabeli EXTENDED;`, w zależności od tego, jak głęboka ma być analiza struktury. Z mojego doświadczenia warto pamiętać, że `REPAIR TABLE` działa na poziomie fizycznych plików tabeli (szczególnie w MyISAM), więc dobrze jest wcześniej mieć kopię zapasową, bo przy poważnych uszkodzeniach część rekordów może zostać utracona przy próbie naprawy. W nowoczesnych projektach, gdzie dominuje InnoDB, częściej polega się na mechanizmach automatycznego odzyskiwania, logach transakcyjnych i backupach, ale znajomość `REPAIR TABLE` nadal jest przydatna przy pracy ze starszymi systemami albo przy mieszanych środowiskach. Dobrą praktyką administracyjną jest też poprzedzenie naprawy poleceniem `CHECK TABLE`, żeby zobaczyć, co dokładnie jest nie tak. Podsumowując: `REPAIR TABLE` to narzędzie serwisowe, a nie coś, czego używa się codziennie w kodzie aplikacji, ale w sytuacjach awaryjnych potrafi uratować bazę.

Pytanie 18

Który modyfikator jest związany z opisem podanym poniżej?

Metoda oraz zmienna jest dostępna wyłącznie dla innych metod własnej klasy.
A. public
B. protected
C. static
D. private
Modyfikator dostępu private w językach programowania takich jak Java i C# umożliwia ukrywanie szczegółów implementacji danej klasy przed jej użytkownikami. Deklarowanie zmiennych i metod jako private chroni je przed nieumyślnymi zmianami z zewnątrz, co zwiększa bezpieczeństwo i integralność danych. Daje to kontrolę nad tym, jak dane są używane i modyfikowane, co jest kluczowe w projektowaniu solidnych systemów. Prywatne elementy są dostępne jedynie w obrębie klasy, co pozwala zachować enkapsulację, jedną z podstaw programowania obiektowego. Dzięki temu, można łatwo modyfikować wewnętrzne mechanizmy klasy, bez wpływu na inne części programu, które z niej korzystają. Używanie private umożliwia również tworzenie metod pomocniczych, które są niewidoczne dla użytkowników zewnętrznych, ale wspomagają działanie publicznych interfejsów. To podejście zgodne ze standardami projektowania, takimi jak zasada najmniejszej wiedzy, która zaleca ograniczanie dostępu do niezbędnego minimum dla poprawy modularności i utrzymania kodu. Przykładem może być klasa KontoBankowe, gdzie saldo konta jest prywatne, a dostęp do jego zmiany odbywa się poprzez metody publiczne, co pozwala na weryfikację operacji finansowych.

Pytanie 19

Przedstawiony kod źródłowy ma na celu zaprezentowanie

$liczba = 1;
while ($liczba != 0)
{
    $liczba = rand(0,100);
    echo $liczba;
}
A. losowych liczb od 0 do 100 do momentu, aż nie wylosowana zostanie liczba 0
B. liczb wprowadzonych z klawiatury tak długo, aż nie zostanie podana wartość 0
C. kolejnych liczb od 1 do 100
D. wylosowanych liczb od 1 do 99
Kod źródłowy przedstawia pętlę while, która generuje losowe liczby od 0 do 100 przy użyciu funkcji rand(0,100). Proces trwa tak długo, jak wygenerowana liczba jest różna od zera. W przypadku wylosowania zera pętla zostaje zakończona. Funkcja rand jest często stosowana w programowaniu do generowania losowych wartości, co może być przydatne w wielu sytuacjach, takich jak symulacje, gry komputerowe czy testowanie algorytmów. Generowanie liczb losowych odgrywa kluczową rolę w kryptografii, gdzie losowość jest istotna dla bezpieczeństwa. Jednak w przypadku zastosowań wymagających wysokiej jakości losowości, takich jak aplikacje kryptograficzne, zaleca się użycie bardziej zaawansowanych generatorów liczb losowych, na przykład funkcji mt_rand w PHP, która oferuje lepsze właściwości statystyczne. Przy wyborze generatora ważne jest, aby zwrócić uwagę na jego właściwości, takie jak okres cyklu, równomierność rozkładu i odporność na przewidywalność, co wpływa na jakość i bezpieczeństwo generowanych danych.

Pytanie 20

Którego związku selektorów CSS należy użyć w miejscu znaków zapytania, aby zdefiniowany styl został zastosowany tylko do tekstu „paragrafie”?

<!DOCTYPE html>
<html>
  <head>
    <style>
      ???{letter-spacing: 10px; color: red;}
    </style>
  </head>
  <body>
    <p>Styl <b>tekstu</b> w pierwszym <i>paragrafie</i></p>
  </body>
</html>
A. b + i
B. i + b
C. b i
D. b > i
W tym zadaniu kluczowe jest zrozumienie, jak działają różne rodzaje selektorów powiązanych w CSS i jak odwzorowują one strukturę DOM. W kodzie HTML mamy element <p>, a w nim kolejno <b>tekstu</b> oraz zaraz po nim <i>paragrafie</i>. Oba są rodzeństwem, mają tego samego rodzica i występują w konkretnej kolejności. To, którą odpowiedź się wybierze, zależy od poprawnego odczytania tej relacji. Zapis „b i” to selektor potomka (descendant selector). Oznacza on: wybierz każdy element <i>, który znajduje się gdziekolwiek wewnątrz elementu <b>, na dowolnym poziomie zagnieżdżenia. W naszym przykładzie <i> nie jest wewnątrz <b>, tylko obok niego, więc taki selektor nic nie znajdzie. To jest dość typowe nieporozumienie: wiele osób myli „potomka” z „rodzeństwem”. Potomek to element zagnieżdżony, a nie kolejny po. Z kolei „b > i” to selektor dziecka (child selector). Jest jeszcze bardziej restrykcyjny – wybiera tylko te elementy <i>, które są bezpośrednimi dziećmi <b>. Czyli <i> musi być natychmiast wewnątrz <b>, bez żadnego pośredniego poziomu. W naszym kodzie znowu ten warunek nie jest spełniony, bo <i> nie jest dzieckiem <b>, tylko jego sąsiadem w tym samym paragrafie. To pokazuje, że zarówno selektor potomka, jak i dziecka są tu po prostu złym typem relacji. Odpowiedź „i + b” odwraca właściwy kierunek. Selektor sąsiedniego rodzeństwa z operatorem „+” działa zawsze w przód: po lewej stronie jest element, który występuje jako pierwszy, po prawej ten, który ma zostać wybrany. „i + b” oznacza więc: wybierz <b>, który stoi bezpośrednio po <i>. W naszym HTML jest odwrotnie – najpierw <b>, potem <i>. To częsty błąd myślowy: ktoś kojarzy poprawny typ selektora („+”), ale nie zwraca uwagi na kolejność elementów. Podsumowując, wszystkie błędne odpowiedzi ignorują prawdziwą relację strukturalną między <b> i <i>. Albo zakładają zagnieżdżenie tam, gdzie go nie ma, albo mylą kierunek selektora sąsiedniego. Dobra praktyka przy pracy z CSS to zawsze patrzenie na drzewo DOM jak na strukturę rodzic–dziecko–rodzeństwo i dobieranie selektora dokładnie do tej relacji. Dzięki temu styl trafia w jeden, konkretny element, zamiast działać przypadkowo lub wcale.

Pytanie 21

W znaczniku (w sekcji ) strony internetowej nie zamieszcza się informacji odnoszących się do

A. automatycznego przeładowania
B. kodowania
C. autora
D. rodzaju dokumentu
Możesz pomyśleć, że odpowiedź o automatycznym odświeżaniu, kodowaniu czy autorze ma sens, bo te info są faktycznie w znaczniku <meta>. Ale są tu pewne niuanse, które mogą wprowadzać w błąd. Znacznik <meta> dostarcza nam metadanych, ale nie mówi nic o typie dokumentu. Typ dokumentu jest bardzo ważny dla przeglądarek, bo informuje je o tym, w jakim standardzie jest stworzona strona. To rolę pełni deklaracja DOCTYPE, która pojawia się na początku dokumentu HTML. Warto więc ogarnąć różnicę pomiędzy metadanymi a typem dokumentu, bo to częsty błąd. Znacznik <meta> zajmuje się informacjami, które mogą poprawić SEO i doświadczenia użytkownika, natomiast typ dokumentu to bardziej techniczna kwestia, która zapewnia, że strona działa jak należy. Dobrze jest pamiętać, że odpowiednie stosowanie zarówno znaczników <meta>, jak i DOCTYPE jest kluczowe, jeśli chcemy, by nasza strona działała sprawnie.

Pytanie 22

Który z poniższych formatów NIE umożliwia zapis plików animowanych?

A. ACE
B. SWF
C. GIF
D. SVG
Wybór formatu SWF sugeruje, że użytkownik myli zastosowania różnych formatów plików. SWF, czyli Shockwave Flash, to format, który był powszechnie używany do tworzenia animacji i interaktywnych aplikacji internetowych. Jest on oparty na wektorowej grafice i obsługuje dźwięk oraz skrypty, co czyni go idealnym do tworzenia złożonych animacji. Z kolei SVG, czyli Scalable Vector Graphics, to format oparty na XML, który pozwala na tworzenie grafiki wektorowej i również obsługuje animacje przy użyciu CSS oraz JavaScript. Poprzez błędne przypisanie funkcji animacyjnych do ACE, użytkownik może nie dostrzegać, jak różne formaty są projektowane z myślą o określonych zastosowaniach. GIF to format, który od lat jest popularny w sieci do prezentacji prostych animacji, zwłaszcza w mediach społecznościowych. Użytkownicy często mylą różne zastosowania formatów i mogą nie być świadomi, że istnieją formaty, które są specjalnie zaprojektowane do obsługi animacji, podczas gdy inne służą zupełnie innym celom, jak kompresja danych. Właściwe zrozumienie tych różnic jest kluczowe dla efektywnego projektowania treści multimedialnych oraz optymalizacji ich działania w różnych środowiskach.

Pytanie 23

Efekt przedstawiony w filmie powinien być zdefiniowany w selektorze

A. td, th { background-color: Pink; }
B. tr { background-color: Pink; }
C. tr:active { background-color: Pink; }
D. tr:hover { background-color: Pink; }
Poprawny selektor to tr:hover { background-color: Pink; }, bo dokładnie opisuje sytuację pokazaną na filmie: efekt pojawia się dopiero po najechaniu kursorem na cały wiersz tabeli. Pseudo-klasa :hover w CSS służy właśnie do definiowania stylów w momencie, gdy użytkownik „najeżdża” myszką na dany element. Jeśli więc chcemy, żeby podświetlał się cały rząd tabeli, logiczne i zgodne z dobrymi praktykami jest przypięcie efektu do znacznika tr, a nie do pojedynczych komórek. W praktyce taki zapis stosuje się bardzo często w interfejsach webowych: w panelach administracyjnych, listach zamówień, tabelach z uczniami, produktami, logami systemowymi itd. Dzięki temu użytkownik łatwiej śledzi, który wiersz właśnie ogląda. To niby detal, ale z punktu widzenia UX robi sporą różnicę. Z mojego doświadczenia to jeden z tych prostych trików CSS, które od razu poprawiają „odczuwalną” jakość strony. Ważne jest też to, że :hover jest częścią standardu CSS (opisane m.in. w specyfikacji CSS Selectors Level 3/4) i działa w praktycznie wszystkich współczesnych przeglądarkach. Nie trzeba do tego żadnego JavaScriptu, żadnych skomplikowanych skryptów – czysty CSS. Dobrą praktyką jest również używanie bardziej stonowanych kolorów niż Pink w prawdziwych projektach, np. #f5f5f5 albo lekki odcień niebieskiego, tak żeby kontrast był czytelny i nie męczył wzroku. Warto też pamiętać, że podobny mechanizm możesz zastosować na innych elementach: np. a:hover dla linków, button:hover dla przycisków czy nawet div:hover dla całych kafelków w layoutach. Kluczowe jest to, żeby pseudo-klasa :hover była przypięta dokładnie do tego elementu, który ma reagować na interakcję użytkownika.

Pytanie 24

Do modyfikacji danych w bazie danych można wykorzystać

A. raport
B. kwerendę SELECT
C. filtrowanie
D. formularz
Formularz jest narzędziem, które umożliwia użytkownikom wprowadzanie i edytowanie danych w bazie danych w sposób przyjazny i intuicyjny. Przy użyciu formularzy można łatwo zdefiniować, jakie dane mają być wprowadzone, oraz w jakim formacie, co znacząco ogranicza ryzyko błędów. W praktyce, formularze są powszechnie wykorzystywane w aplikacjach webowych oraz systemach zarządzania danymi, takich jak systemy CRM czy ERP. Umożliwiają one także walidację danych przed ich zapisaniem w bazie, co jest ważnym krokiem w zapewnieniu integralności danych. Wykorzystanie formularzy w projektowaniu aplikacji jest zgodne z zasadami UX, które kładą nacisk na łatwość obsługi i wygodę użytkownika. Dodatkowo, standardy takie jak HTML5 oferują różnorodne elementy formularzy, które można łatwo integrować z backendem, co ułatwia przechwytywanie danych i ich późniejsze przetwarzanie.

Pytanie 25

Wynikiem działania poniższej pętli for w przedstawionym kodzie PHP jest wyświetlenie liczb:

<?php
   for($i=5;$i>1;$i-=2)
       echo ($i%2)." ";
?>
A. 1 1
B. 1 0 1 0
C. 1 0 1
D. 1 0
Poprawna odpowiedź to 1 1, ponieważ analizując przedstawioną pętlę for, zaczynamy od zmiennej $i, która ma wartość 5. Pętla będzie działać tak długo, jak wartość $i jest większa od 1. W każdym kroku $i jest zmniejszane o 2, co oznacza, że w kolejnych iteracjach przyjmuje wartości 5, 3, a następnie 1. Wartości te są poddawane operacji modulo 2. Operacja modulo zwraca resztę z dzielenia, która dla liczb nieparzystych (5 i 3) wynosi 1 oraz dla liczby parzystej (0) wynosi 0. Zatem, w pierwszej iteracji, $i = 5, 5 % 2 = 1, a w drugiej iteracji, $i = 3, 3 % 2 = 1. Ostatecznie, pętla nie wykonuje się, gdy $i = 1, ponieważ warunek $i > 1 nie jest już spełniony. W rezultacie, poprawnym wynikiem działania tego fragmentu kodu jest wyświetlenie dwóch wartości 1. Przykład zastosowania takiej konstrukcji można znaleźć w sytuacjach, w których chcemy przetworzyć kolekcję liczb i wyodrębnić ich parzystość lub nieparzystość, co jest powszechną operacją w programowaniu.

Pytanie 26

Jaką formę przybierze data po wykonaniu poniższego kodu PHP?

<?php
echo date('l, dS F Y');
?>
A. Monday, 10th July 17
B. 10, Monday July 2017
C. Monday, 10th July 2017
D. Monday, 10 July 2017
Błędne odpowiedzi wynikają z niepoprawnego zrozumienia specyfikacji formatów używanych w funkcji date() w PHP. Formatowanie daty w PHP wymaga precyzyjnego zastosowania odpowiednich znaków formatujących, które określają sposób wyświetlania poszczególnych elementów daty. Wykorzystanie 'l' daje pełną nazwę dnia tygodnia, co eliminuje wszelkie opcje, które tego nie uwzględniają. 'd' zwraca dwucyfrowy dzień miesiąca, a 'S' dodaje sufiks porządkowy, co jest charakterystyczne dla języka angielskiego. Dlatego też formaty, które nie zawierają sufiksu porządkowego, są niepoprawne. 'F' oznacza pełną nazwę miesiąca, więc każdy format, który nie przedstawia miesiąca w pełni, jest błędny. 'Y' z kolei formatuje rok w pełnej czterocyfrowej formie, co jest standardem dla aplikacji wymagających precyzji i unikania nieporozumień związanych z rokiem dwucyfrowym. Pomyłki często wynikają z mylnego przyjęcia założenia, że PHP automatycznie dostosuje format do oczekiwanego rezultatu, co nie jest prawdą i wymaga świadomego użycia odpowiednich specyfikatorów formatujących.

Pytanie 27

Polecenie SQL:

GRANT CREATE, ALTER ON sklep.* TO adam;
Zakładając, że użytkownik adam wcześniej nie posiadał żadnych uprawnień, to powyższe polecenie SQL przyzna mu prawa jedynie do:
A. dodawania oraz modyfikacji danych w tabeli sklep
B. tworzenia oraz modyfikacji struktury w tabeli sklep
C. dodawania oraz modyfikacji danych we wszystkich tabelach bazy sklep
D. tworzenia oraz modyfikacji struktury wszystkich tabel w bazie sklep
Odpowiedź jest prawidłowa, ponieważ polecenie SQL 'GRANT CREATE, ALTER ON sklep.* TO adam;' przyznaje użytkownikowi 'adam' uprawnienia do tworzenia (CREATE) i zmiany (ALTER) struktury wszystkich tabel w bazie danych 'sklep'. W kontekście systemów zarządzania bazami danych (DBMS), uprawnienia 'CREATE' pozwalają użytkownikowi na tworzenie nowych obiektów, takich jak tabele, podczas gdy 'ALTER' umożliwia modyfikację istniejących obiektów. Dlatego użytkownik 'adam' zyskuje możliwość modyfikacji struktury każdej tabeli w bazie 'sklep', co obejmuje dodawanie lub usuwanie kolumn, zmiany typów danych oraz inne operacje związane z definicją tabel. Przykładowo, jeśli 'adam' chciałby dodać nową kolumnę do tabeli 'produkty', mógłby to zrobić dzięki uprawnieniom 'ALTER'. Z perspektywy najlepszych praktyk, przyznawanie takich uprawnień powinno być ograniczone do zaufanych użytkowników, aby zminimalizować ryzyko nieautoryzowanych zmian w strukturze bazy danych.

Pytanie 28

Która z funkcji SQL nie przyjmuje żadnych argumentów?

A. len
B. year
C. now
D. upper
Funkcja SQL 'now' jest funkcją, która zwraca bieżącą datę i czas. Jest to przykład funkcji, która nie pobiera żadnych argumentów, co oznacza, że jej działanie jest niezależne od jakichkolwiek wartości wejściowych. W praktyce, użycie tej funkcji pozwala na uzyskanie aktualnego znacznika czasu w zapytaniach SQL, co jest szczególnie przydatne w kontekście logowania zdarzeń w bazach danych, generowania raportów lub wstawiania danych z bieżącą datą i czasem do tabeli. Na przykład, w poleceniu SQL 'INSERT INTO logi (data_czas) VALUES (now());' wstawiamy aktualny czas do kolumny 'data_czas'. Stosowanie funkcji, które nie wymagają argumentów, jak 'now', jest zgodne z najlepszymi praktykami, ponieważ upraszcza kod i minimalizuje ryzyko błędów związanych z przekazywaniem niepoprawnych argumentów.

Pytanie 29

Związek między tabelami, osiągany przez bezpośrednie połączenie kluczy głównych obu tabel, nazywamy relacją

A. n..1
B. n..m
C. 1..n
D. 1..1
Odpowiedź 1..1 to trafny wybór. Mamy tam relację między tabelami, gdzie każda z par rekordów ma swoje odpowiedniki – czyli jeden rekord w tabeli A ma dokładnie jeden odpowiednik w tabeli B. Taka sytuacja jest dość konkretna i w praktyce sprawdza się w wielu systemach zarządzania danymi. Na przykład, jeśli mamy jakąś instytucję, to fajnie, żeby miała jednego reprezentanta, prawda? No i właśnie relacja 1..1 się w tym sprawdza. Choć muszę przyznać, że nie jest ona zbyt popularna, bo częściej korzysta się z innych typów relacji, to jednak w sytuacjach, gdzie chcemy mieć jasne połączenia, jest niezastąpiona. Weźmy na przykład użytkowników i ich profile – każdy użytkownik ma jeden profil, a ten profil tylko jednego użytkownika. Takie rozwiązanie ogranicza powielanie danych, co jest dużym plusem.

Pytanie 30

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

A. otrzymania kodu błędu, gdy wstawienie wiersza się nie powiodło
B. uzyskania id ostatnio dodanego wiersza
C. pobrania najwyższego indeksu bazy, aby po jego zwiększeniu wstawić pod niego dane
D. uzyskania pierwszego dostępnego indeksu bazy, tak, aby można było pod nim wstawić nowe dane
Pole insert_id w bibliotece MySQLi języka PHP jest niezwykle przydatne w kontekście zarządzania danymi w bazach danych. Głównym celem tego pola jest umożliwienie programistom uzyskania identyfikatora (ID) ostatnio wstawionego wiersza do bazy danych. Ta funkcjonalność jest kluczowa, gdyż wiele aplikacji wymaga odniesienia do nowo dodanych rekordów, szczególnie w sytuacjach, gdy w tabelach stosowane są klucze główne typu AUTO_INCREMENT. Przykładowo, po dodaniu rekordu do tabeli użytkowników, programista może użyć funkcji mysqli_insert_id(), aby pobrać ID tego rekordu i wykorzystać je do dalszych operacji, takich jak dodawanie powiązanych danych w innej tabeli. Tego typu mechanizmy są zgodne z najlepszymi praktykami w zakresie zarządzania danymi, zapewniając spójność i bezpieczeństwo operacji na bazach danych. Warto także pamiętać, że poprawne zarządzanie ID pozwala uniknąć problemów z duplikacją i zapewnia, że aplikacja może dynamicznie dopasowywać swoje czynności do aktualnych danych.

Pytanie 31

Który z poniższych kodów HTML najlepiej ilustruje opisaną tabelę? (Obramowanie tabeli oraz komórek zostało pominięte dla uproszczenia)

Ilustracja do pytania
A. Odpowiedź C
B. Odpowiedź D
C. Odpowiedź B
D. Odpowiedź A
Pozostałe opcje zawierają błędy w użyciu atrybutów colspan i rowspan co prowadzi do nieprawidłowego odwzorowania struktury tabeli. W opcji A dane są przedstawione bez użycia rowspan co powoduje że każda informacja znajdowałaby się w osobnym wierszu nie łącząc kolumny Telefony co jest sprzeczne z przedstawionym stylem w pytaniu. To może prowadzić do dezorganizacji danych i braku przejrzystości. W przypadku opcji C zastosowanie colspan na ostatniej komórce jest błędne ponieważ rozszerza komórkę na dwie kolumny co nie jest zgodne z prezentowaną strukturą gdzie dane są ułożone w dwóch wierszach pod jednym nagłówkiem. Opcja D również błędnie używa colspan przy nagłówku Telefony co powoduje że dane nie są przedstawiane w logicznym układzie ukazującym że jedna kolumna powinna obejmować dwie komórki z telefonami. Takie błędy w strukturze tabeli mogą prowadzić do problemów z użytecznością i dostępnością strony internetowej ponieważ użytkownicy mogą mieć trudności z odnalezieniem i zrozumieniem prezentowanych informacji. Problemem jest również brak semantyczności co jest kluczowe dla SEO i dostępności dla osób korzystających z czytników ekranu. Dlatego ważne jest prawidłowe użycie atrybutów strukturalnych w HTML aby zapewnić dostępność i poprawne wyświetlanie treści na różnych urządzeniach i przeglądarkach co jest kluczowe w nowoczesnym projektowaniu stron internetowych. Dobre praktyki projektowania stron internetowych zalecają również używanie HTML w sposób semantyczny co pomaga w tworzeniu bardziej czytelnych i dostępnych dokumentów. Poprawne użycie atrybutów takich jak rowspan i colspan jest kluczowe w osiągnięciu tych celów i uniknięciu nieporozumień i błędów w prezentacji danych na stronach internetowych. Ułatwia to również utrzymanie i aktualizację kodu w przyszłości oraz zwiększa ogólną jakość i dostępność strony internetowej.

Pytanie 32

Zgodnie z aktualnie obowiązującym w Polsce prawem, osoby z wykształceniem inżynieryjno-technicznym są zobowiązane do odbywania szkoleń BHP w regularnych odstępach czasu, które nie powinny być dłuższe niż co

A. 6 lat
B. 8 lat
C. 1 rok
D. 5 lat
Wszystkie pozostałe odpowiedzi są błędne, ponieważ nie odpowiadają wymogom prawnym dotyczącym okresowych szkoleń BHP dla inżynieryjno-technicznych pracowników w Polsce. Odpowiedzi sugerujące, że szkolenia powinny odbywać się co 5, 6 lub 8 lat, opierają się na nieprawidłowym rozumieniu przepisów. Ustawa Kodeks pracy jasno określa, że okresowe szkolenia BHP mają na celu nie tylko dostarczenie pracownikom wiedzy na temat bezpieczeństwa, ale także dostosowanie ich umiejętności do zmieniających się warunków w miejscu pracy. Zbyt długi okres pomiędzy szkoleniami mógłby prowadzić do utraty aktualności wiedzy pracowników, co zwiększa ryzyko wypadków oraz zagrożeń zdrowotnych. W praktyce, regularne, coroczne szkolenia są niezbędne do nadążania za nowymi przepisami, technologiami oraz aktualizacjami w procedurach bezpieczeństwa. Ponadto, firmy, które zaniedbują wymóg przeprowadzania takich szkoleń, mogą być narażone na konsekwencje prawne oraz finansowe, w tym na kary administracyjne. Odpowiednie przestrzeganie przepisów dotyczących szkoleń BHP jest kluczowe dla zapewnienia bezpieczeństwa pracowników oraz ochrony firmy przed potencjalnymi stratami.

Pytanie 33

Podane w ramce polecenie SQL nadaje prawo SELECT

GRANT SELECT ON hurtownia.* TO 'sprzedawca'@'localhost';
A. do wszystkich tabel w bazie hurtownia.
B. dla użytkownika 'root' na serwerze localhost.
C. dla użytkownika 'root' na serwerze sprzedawca.
D. do wszystkich pól w tabeli hurtownia.
To polecenie GRANT jest typowym przykładem, gdzie drobny szczegół składni całkowicie zmienia znaczenie. Wiele osób intuicyjnie myśli, że skoro pojawia się nazwa hurtownia, to chodzi o tabelę o takiej nazwie, albo że skoro często pracuje się na koncie root, to uprawnienia dotyczą właśnie jego. Tutaj jednak kluczowe są dwie rzeczy: zapis hurtownia.* oraz dokładna forma 'sprzedawca'@'localhost'. W MySQL konstrukcja nazwa_bazy.* jednoznacznie oznacza całą bazę danych, czyli wszystkie tabele znajdujące się w tej bazie. Gwiazdka nie oznacza „wszystkich pól w tabeli”, jak w SELECT * FROM tabela; tylko „wszystkie obiekty danego typu w tym kontekście”, czyli w tym wypadku wszystkie tabele w bazie hurtownia. Błąd myślowy bierze się stąd, że ludzie przenoszą swoje skojarzenia z SELECT * na GRANT, a to są jednak różne miejsca w składni SQL. Jeśli chcielibyśmy nadać uprawnienie tylko do jednej tabeli, używamy zapisu nazwa_bazy.nazwa_tabeli, bez gwiazdki. Na przykład GRANT SELECT ON hurtownia.klienci TO 'sprzedawca'@'localhost'; dotyczyłoby tylko tabeli klienci. Wtedy dopiero można by mówić o dostępie do wszystkich pól w tej konkretnej tabeli, bo SELECT z założenia domyślnie widzi wszystkie kolumny, chyba że zastosujemy uprawnienia na poziomie kolumn, co jest już bardziej zaawansowanym tematem. Druga częsta pomyłka to utożsamianie każdego polecenia GRANT z użytkownikiem root. W MySQL użytkownik jest identyfikowany przez parę login@host. W naszym przykładzie stoi tam wyraźnie 'sprzedawca'@'localhost', więc nie ma tu żadnego roota. Gdyby chodziło o konto root, składnia musiałaby wyglądać np. 'root'@'localhost'. Co więcej, host sprzedawca w ogóle nie występuje w tym poleceniu – pojawia się tylko jako nazwa użytkownika. To powoduje czasem dodatkowe zamieszanie: ktoś widzi słowo sprzedawca i myśli, że to nazwa serwera, a localhost to użytkownik, co jest całkowicie odwrotnie. Z punktu widzenia dobrych praktyk administracji bazą danych, nadawanie uprawnień rootowi poleceniem GRANT w aplikacjach produkcyjnych jest zresztą złym pomysłem. Standardem jest tworzenie osobnych kont, takich jak sprzedawca, księgowy czy aplikacja_web, z precyzyjnie dobranymi uprawnieniami do konkretnych baz. Wtedy dokładnie wiemy, kto może co czytać i modyfikować. Z mojego doświadczenia wynika, że większość problemów z bezpieczeństwem wynika właśnie z używania zbyt szerokich uprawnień, głównie konta root tam, gdzie absolutnie nie jest potrzebne. Podsumowując: to polecenie nie nadaje dostępu do „wszystkich pól w tabeli hurtownia”, bo hurtownia jest tu bazą, a nie tabelą. Nie dotyczy też użytkownika root ani żadnego serwera o nazwie sprzedawca. Nadaje ono prawo SELECT do wszystkich tabel w bazie hurtownia konkretnemu użytkownikowi o nazwie sprzedawca, który łączy się z hosta localhost. Zrozumienie tej składni jest kluczowe przy zarządzaniu uprawnieniami w MySQL i ogólnie w systemach baz danych.

Pytanie 34

Ile razy zostanie wykonana pętla przedstawiona w języku PHP, zakładając, że zmienna kontrolna nie jest zmieniana w jej wnętrzu?
for($i = 0; $i <= 10; $i++) { ...... }

A. 10 razy
B. 11 razy
C. 0 razy
D. Nieskończoność
Odpowiedzi 0, 10 oraz nieskończoność są niepoprawne z kilku powodów. Przyjęcie, że pętla wykona się 0 razy, jest błędne, ponieważ pętla for rozpoczyna swoje działanie od zainicjowania zmiennej $i na 0. Zgodnie z konstrukcją pętli, pierwsze sprawdzenie warunku $i <= 10 jest pozytywne, co implikuje, że blok kodu zostanie wykonany przynajmniej raz. W odniesieniu do odpowiedzi 10, zakłada ona, że pętla zakończy się, gdy $i osiągnie wartość 10, co jest mylące. W rzeczywistości, pętla wykonuje się 11 razy, ponieważ ostatnie wykonanie kodu następuje przy $i równym 10, a następnie następuje inkrementacja, co sprawia, że $i osiąga 11 i przerywa działanie pętli. Wreszcie, odpowiedź sugerująca nieskończoną ilość iteracji jest również błędna. Nieskończone pętle często wynikają z braku modyfikacji zmiennej sterującej, jednak w tym przypadku pętla for ma zdefiniowaną inkrementację, co zapewnia, że po pewnym czasie pętla zakończy swoje działanie, nie generując nieskończoności. Każda z tych błędnych odpowiedzi pokazuje różne nieporozumienia dotyczące działania pętli for oraz logiki programistycznej w PHP.

Pytanie 35

Jakie pola znajdują się w formularzu?

Ilustracja do pytania
A. Textarea, Select, Input(Radio), Input(Radio), Input(Reset), Input(Submit)
B. Input(Text), Select, Input(Radio), Input(Radio), Input(Submit), Input(Reset)
C. Input(Text), Input(Checkbox), Select, Select, Input(Submit), Input(Reset)
D. Textarea, Option, Input(Checkbox), Input(Checkbox), Input(Submit), Input(Reset)
Odpowiedź, którą wybrałeś, jest ok, bo wszystko trzyma się zasady formularzy z obrazka. Input(Text) to właśnie pole, w którym wpisujesz swoje nazwisko. Potem mamy Input(Select), który pozwala wybrać jedno z województw z listy – to też jest na plus. Przy Input(Radio) można wybrać jedną opcję, co dobrze pasuje do wyboru między Studiami podyplomowymi a Kursem. Input(Submit) jest do wysyłania formularza, więc tu też wszystko gra. Na końcu Input(Reset) zeruje wszystko, co jest przydatne, kiedy chcesz wyczyścić formularz. Wszystkie te elementy są zgodne z HTML5, co jest teraz standardem w tworzeniu stron. Fajnie, że formularz ma logiczne ułożenie, bo ułatwia to korzystanie z niego. Moim zdaniem, dobrze wiedzieć, jakie elementy są stosowane w formularzach, żeby wszystko działało tak jak powinno.

Pytanie 36

Jak wybrać nazwy produktów z tabeli sprzet zawierającej pola: nazwa, cena, liczbaSztuk, dataDodania, które zostały dodane w roku 2021, a ich cena jest poniżej 100 zł lub liczba sztuk przekracza 4, w sekcji WHERE?

A. WHERE dataDodania LIKE '2021%' OR cena < 100 OR liczbaSztuk > 4
B. WHERE dataDodania LIKE '2021%' AND cena < 100 AND liczbaSztuk > 4
C. WHERE dataDodania LIKE '2021%' AND (cena < 100 OR liczbaSztuk > 4)
D. WHERE dataDodania LIKE '2021%' OR (cena < 100 AND liczbaSztuk > 4)
Odpowiedź trzecia jest poprawna, ponieważ stosuje logiczne połączenie warunków w sekcji WHERE, które precyzyjnie spełnia wymagania zawarte w pytaniu. Warunek 'dataDodania LIKE '2021%'' filtruje dane, aby uwzględnić jedynie te produkty, które zostały dodane w roku 2021. Następnie, użycie operatora AND łączy ten warunek z nawiasem, który grupuje dwa inne warunki: 'cena < 100 OR liczbaSztuk > 4'. Taki zapis oznacza, że wystarczy spełnić jeden z tych dwóch warunków - cena musi być niższa niż 100 zł lub liczba sztuk większa niż 4. Dzięki temu, zapytanie będzie wydajne i zwróci wszystkie pasujące rekordy, co jest kluczowe w pracy z bazami danych. Takie podejście jest zgodne z najlepszymi praktykami SQL, które sugerują stosowanie nawiasów do grupowania logiki warunków, co zwiększa czytelność i zrozumienie zapytania. Przykładem zastosowania tego podejścia jest sytuacja w dużych sklepach internetowych, gdzie istotne jest szybkie filtrowanie danych produktów, aby poprawić doświadczenie użytkownika oraz efektywność sprzedażową.

Pytanie 37

Na ilustracji zaprezentowano koncepcję układu bloków strony internetowej. Przyjmując, że bloki są realizowane za pomocą znaczników sekcji, a szerokość jest określona tylko dla bloków 2, 3 oraz 4, ich stylowanie powinno uwzględniać właściwość

Ilustracja do pytania
A. clear: both dla bloku 5 i float: left jedynie dla bloków 2, 3 oraz 4
B. float: left jedynie dla bloków 3 i 4 oraz clear: both dla bloku 2
C. clear: both dla wszystkich bloków
D. float: left dla wszystkich bloków
Odpowiedź jest prawidłowa, ponieważ wykorzystanie float: left dla bloków 2, 3 i 4 pozwala na ich ustawienie obok siebie w poziomie. Jest to klasyczna technika stosowana w CSS do tworzenia layoutów, gdzie elementy mają płynąć obok siebie. Definiując float: left, elementy zaczynają od lewej krawędzi rodzica i układają się w linii poziomej. Użycie clear: both dla bloku 5 zapewnia, że blok ten zacznie się poniżej pływających bloków 2, 3 i 4, a nie obok nich. Clear: both jest konieczne, aby zapewnić, że blok 5 nie zostanie zakłócony przez floating, co jest powszechną praktyką przy tworzeniu wielokolumnowych layoutów. Kiedy float jest używany bez clear, może prowadzić do overlapania elementów, co jest niepożądane w strukturze layoutu. Praktyczne zastosowanie tego podejścia obejmuje układy z nagłówkiem, treścią i stopką, gdzie nagłówek i stopka powinny być pełnej szerokości, a treść podzielona na kolumny obok siebie. To podejście jest zgodne z tradycyjnymi metodami budowania stron przed wprowadzeniem flexboxa i grida, gdzie float był jednym z podstawowych narzędzi do zarządzania układem strony. Współczesne dobre praktyki wciąż uznają jego istotność, zwłaszcza w kontekście starszych projektów utrzymywanych z biegiem czasu.

Pytanie 38

W przypadku podanego fragmentu kodu walidator HTML zgłosi błąd, ponieważ <img src="kwiat.jpg alt="kwiat">

A. zastosowano nieznany atrybut alt
B. nie zamknięto cudzysłowu
C. brak obrazu kwiat.jpg
D. użyto niewłaściwego znacznika do wyświetlenia obrazu
W przedstawionym kodzie HTML występuje błąd związany z niedomknięciem cudzysłowu dla atrybutu 'src'. Prawidłowa składnia powinna wyglądać następująco: <img src="kwiat.jpg" alt="kwiat">. Brak cudzysłowu po 'kwiat.jpg' uniemożliwia poprawne zinterpretowanie kodu przez przeglądarki, co skutkuje błędem walidacji. Zasady walidacji kodu HTML są zgodne z wytycznymi W3C, które zalecają, aby każdy atrybut był zamknięty cudzysłowem. Poprawność kodu nie tylko wpływa na jego działanie, ale również na dostępność strony oraz SEO. Użytkownicy, którzy poruszają się po stronach bez pełnej obsługi HTML, mogą napotkać problemy z wyświetlaniem obrazów. W praktyce, zawsze warto stosować dobregi praktyki kodowania, takie jak użycie linterów do sprawdzania poprawności kodu przed jego publikacją, aby uniknąć takich błędów.

Pytanie 39

Przypisanie w JavaScript, zapisane jako var x=true;, prowadzi do tego, że zmienna x przyjmuje typ

A. liczbowym
B. ciągu znaków
C. wyliczeniowym
D. logicznym
Deklaracja zmiennej w języku JavaScript, przy użyciu słowa kluczowego 'var', tworzy zmienną x, której typ jest logiczny. Typ logiczny (boolean) w JavaScript ma dwa możliwe wartości: true oraz false. Jest to podstawowy typ danych, który jest szeroko używany w programowaniu do reprezentacji wartości prawda/fałsz, co jest niezbędne przy podejmowaniu decyzji, takich jak warunki w instrukcjach if, pętlach czy operacjach logicznych. Dlatego też, przypisanie wartości true do zmiennej x oznacza, że x jest typu boolean, co można zweryfikować za pomocą operatora typeof. W praktycznych zastosowaniach, typ logiczny jest niezwykle ważny, na przykład w formularzach internetowych, gdzie wartości typu boolean mogą określać, czy dany warunek został spełniony. W odniesieniu do standardów, typ boolean jest zdefiniowany w ECMAScript, co czyni go fundamentalnym elementem w programowaniu w tym języku. Zrozumienie typów danych, a szczególnie typu logicznego, jest kluczowe dla efektywnego programowania i optymalizacji kodu.

Pytanie 40

W języku JavaScript następujący zapis: var napis1 = new napisy); ma na celu

A. zadeklarowanie zmiennej napis1 oraz wywołanie funkcji, w której argumentem jest napis1
B. wywołanie metody dla obiektu napisy
C. stworzenie instancji obiektu napis1 klasy napisy
D. stworzenie nowej klasy napis1
W podanym kodzie JavaScript mamy do czynienia z próbą utworzenia obiektu klasy 'napisy'. Operacja 'new' w JavaScript jest używana do instancjowania obiektów z funkcji konstrukcyjnych, które pełnią rolę klas. Przykład działania: jeśli mamy zdefiniowaną funkcję konstrukcyjną 'function napisy() { this.text = ''; }', to użycie 'var napis1 = new napisy();' stworzy nowy obiekt 'napis1', który będzie posiadał właściwość 'text'. Warto zwrócić uwagę, że 'napisy' musi być zdefiniowane jako funkcja konstrukcyjna, aby mogło być użyte w kontekście 'new'. Zrozumienie tego mechanizmu jest kluczowe w programowaniu obiektowym w JavaScript, gdzie klasy i obiekty odgrywają fundamentalną rolę w organizacji kodu. Aby lepiej zrozumieć działanie tego fragmentu, warto zapoznać się z dokumentacją dotyczącą obiektów i funkcji w JavaScript, co znajduje się w standardzie ECMAScript. Przykładowy kod ilustrujący tworzenie obiektu mógłby wyglądać tak: 'var napis1 = new napisy(); console.log(napis1.text);'.