Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik informatyk
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 20 stycznia 2026 15:40
  • Data zakończenia: 20 stycznia 2026 16:12

Egzamin zdany!

Wynik: 33/40 punktów (82,5%)

Wymagane minimum: 20 punktów (50%)

Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

Aby aplikacja PHP mogła nawiązać połączenie z bazą danych, konieczne jest najpierw użycie funkcji o nazwie

A. mysqli_create_db
B. mysqli_connect
C. mysqli_close
D. mysqli_select_db
Funkcja mysqli_connect jest kluczowym elementem w procesie komunikacji aplikacji PHP z bazą danych. Jej głównym zadaniem jest nawiązanie połączenia z serwerem MySQL, co jest niezbędne, zanim jakiekolwiek operacje na danych mogą zostać przeprowadzone. Wywołując tę funkcję, należy podać odpowiednie parametry: nazwę hosta (zazwyczaj 'localhost'), nazwę użytkownika, hasło oraz nazwę bazy danych, z którą chcemy pracować. Na przykład: $conn = mysqli_connect('localhost', 'user', 'password', 'database');. Dobrą praktyką jest również sprawdzenie, czy połączenie zostało nawiązane poprawnie, co można zrobić za pomocą odpowiednich warunków. W przypadku ewentualnych błędów podczas nawiązywania połączenia, funkcja ta zwraca wartość false, co umożliwia dalsze działania naprawcze. Dodatkowo, w kontekście bezpieczeństwa, warto stosować techniki takie jak przygotowywanie zapytań (prepared statements), aby zminimalizować ryzyko ataków typu SQL Injection. Właściwe nawiązanie połączenia z bazą danych jest fundamentem każdej aplikacji webowej opartej na PHP.

Pytanie 2

Na ilustracji przedstawiono dwie tabele. Aby ustanowić między nimi relację jeden do wielu, gdzie jedna strona to Klienci, a druga strona to Zamowienia, należy

Ilustracja do pytania
A. wprowadzić pole klucza obcego do tabeli Zamowienia i powiązać je z ID tabeli Klienci.
B. powiązać relacją pola ID z obu tabel.
C. dodać pole klucza obcego do tabeli Klienci i powiązać je z ID tabeli Zamowienia.
D. stworzyć trzecią tabelę z dwoma kluczami obcymi. Jeden klucz połączyć z ID tabeli Klienci, a drugi klucz połączyć z ID tabeli Zamowienia.
Tworzenie relacji jeden do wielu między tabelami w bazie danych wymaga zrozumienia, jak działa klucz podstawowy i klucz obcy. W tym przypadku tabela Klienci posiada pole ID, które jest kluczem podstawowym. Aby utworzyć relację jeden do wielu, należy dodać do tabeli Zamowienia pole klucza obcego, które będzie połączone z polem ID z tabeli Klienci. Dzięki temu każdy rekord w tabeli Zamowienia będzie mógł być przypisany do jednego klienta, ale jeden klient może mieć wiele zamówień. Taka struktura jest zgodna z normalizacją baz danych, która ma na celu eliminację redundancji danych i zapewnienie integralności danych. W praktyce, w systemach takich jak SQL, relacje te są wykorzystywane do wykonywania operacji takich jak wyszukiwanie wszystkich zamówień dla konkretnego klienta, co jest wykonywane przez dołączenie tabel za pomocą klucza obcego. Implementacja kluczy obcych w bazach danych jest standardową praktyką, która zwiększa spójność i bezpieczeństwo danych, minimalizując ryzyko błędów podczas operacji CRUD (Create Read Update Delete).

Pytanie 3

Proces zmierzający do osiągnięcia przez stronę internetową jak najwyższych pozycji w rankingach wyszukiwarek internetowych nosi nazwę

A. pozycjonowania.
B. optymalizacji wydajności.
C. walidacji HTML.
D. responsywności.
Prawidłowa odpowiedź to „pozycjonowanie”, bo właśnie tak w branży nazywa się proces działań mających na celu osiąganie jak najwyższych pozycji strony w wynikach wyszukiwarek (głównie Google). W praktyce pozycjonowanie obejmuje zarówno SEO on‑page, jak i SEO off‑page. On‑page to m.in. poprawna struktura HTML, nagłówki H1–H3, sensowne tytuły stron (tag title), opisy meta description, przyjazne adresy URL, szybkość ładowania, mobile‑friendly design. Off‑page to głównie link building, czyli zdobywanie wartościowych odnośników z innych serwisów, obecność w katalogach branżowych, artykuły sponsorowane, a także ogólna reputacja domeny. Z mojego doświadczenia pozycjonowanie to nie jednorazowa akcja, tylko stały proces optymalizacji, analizy słów kluczowych, śledzenia statystyk w Google Search Console i Google Analytics, dopasowywania treści do intencji użytkownika. Dobre praktyki mówią, żeby unikać technik black‑hat SEO (np. kupowanie tysięcy spamowych linków, ukryty tekst, keyword stuffing), bo algorytmy wyszukiwarek szybko to wychwytują i mogą nałożyć filtr lub karę. Moim zdaniem kluczowe w pozycjonowaniu jest połączenie technicznie poprawnej strony (wydajność, responsywność, poprawny HTML) z wartościową treścią i rozsądną strategią linków. To właśnie cały ten zestaw działań nazywamy pozycjonowaniem strony w wyszukiwarkach.

Pytanie 4

Który efekt został zaprezentowany na filmie?

A. Zmiana jasności zdjęć.
B. Przenikanie zdjęć.
C. Zwiększenie ostrości zdjęcia.
D. Zmniejszenie kontrastu zdjęcia.
Poprawnie wskazany efekt to przenikanie zdjęć, często nazywane też płynnym przejściem (ang. crossfade). Polega to na tym, że jedno zdjęcie stopniowo zanika, jednocześnie drugie pojawia się z narastającą widocznością. W praktyce technicznej realizuje się to najczęściej przez zmianę przezroczystości (opacity) dwóch warstw – jedna warstwa z pierwszym obrazem ma zmniejszaną wartość opacity z 1 do 0, a druga z kolejnym zdjęciem zwiększaną z 0 do 1. Na stronach WWW taki efekt robi się zwykle za pomocą CSS (transition, animation, keyframes) albo JavaScriptu, czasem z użyciem bibliotek typu jQuery czy gotowych sliderów. Moim zdaniem to jest jeden z podstawowych efektów, który warto umieć odtworzyć, bo pojawia się w galeriach, sliderach na stronach głównych, prezentacjach produktów czy prostych pokazach slajdów. W materiałach multimedialnych, np. w edycji wideo, dokładnie ten sam efekt nazywa się przejściem typu „cross dissolve” lub „fade”, i zasada działania jest identyczna – płynne nakładanie się dwóch klatek obrazu w czasie. Dobre praktyki mówią, żeby nie przesadzać z czasem trwania przenikania: zwykle 0,5–1,5 sekundy daje przyjemny, profesjonalny wygląd, bez wrażenia „zamulenia” interfejsu. Warto też pilnować spójności – jeśli na stronie używasz przenikania w jednym miejscu, dobrze jest utrzymać podobny styl animacji w innych elementach, żeby całość wyglądała konsekwentnie i nie rozpraszała użytkownika. W kontekście multimediów na WWW przenikanie jest też korzystne wydajnościowo, bo operuje głównie na właściwości opacity i transformacjach, które przeglądarki potrafią optymalizować sprzętowo.

Pytanie 5

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

A. autora
B. kodowania
C. rodzaju dokumentu
D. automatycznego przeładowania
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 6

Emblemat systemu CMS o nazwie Joomla! to

Ilustracja do pytania
A. Rys. D
B. Rys. C
C. Rys. A
D. Rys. B
Logo przedstawione na Rys. A nie jest związane z Joomla!, ale z systemem Drupal. Drupal, podobnie jak Joomla!, jest systemem zarządzania treścią, ale różnią się one filozofią i strukturą. Drupal często wybierany jest do bardziej złożonych projektów, które wymagają dużej elastyczności i skalowalności, jednak jego administracja może być bardziej skomplikowana w porównaniu do Joomla!. Rys. C przedstawia logo mniej znanego systemu CMS o nazwie Mambo, który był pierwowzorem Joomla!, ale obecnie jest rzadko używany z powodu społeczności, która przeniosła się do Joomla!. Z kolei Rys. D to logo WordPressa, najpopularniejszego CMS na świecie, znanego z prostoty użycia i ogromnej liczby dostępnych wtyczek oraz motywów, co czyni go idealnym wyborem dla blogów i stron komercyjnych. Łatwość, z jaką można zmieniać wygląd i funkcjonalności WordPressa, przyciąga użytkowników, którzy preferują szybkie wdrożenie i łatwość obsługi. Rozpoznanie, które logo reprezentuje dany CMS, jest ważne dla specjalistów IT, ponieważ pozwala na szybki wybór odpowiedniej platformy do określonych potrzeb projektowych oraz unikanie potencjalnych błędów związanych z wyborem nieodpowiedniego narzędzia do realizacji zamierzonych celów. Zrozumienie tych różnic jest kluczowe dla efektywnego zarządzania projektami webowymi i dostosowania technologii do specyfiki zadania oraz wymagań klienta. Wybór odpowiedniego systemu CMS powinien być oparty na analizie potrzeb projektu oraz kompetencjach zespołu, co pozwala na optymalizację workflow i osiągnięcie zamierzonych celów biznesowych w sposób efektywny i zrównoważony.

Pytanie 7

Domyślna CAPTCHA
CAPTCHA - reCAPTCHA

W CMS Joomla! opcja konfiguracji globalnej, pokazana na ilustracji, służy do
A. zapobiegania atakom typu SQL Injection.
B. dopuszczenia do przesyłania danych z formularzy wypełnionych tylko przez człowieka.
C. wyświetlania okna informującego o zgodzie użytkownika na pliki cookie.
D. wyświetlenia okna umożliwiającego wyszukiwanie tekstu na stronie.
Na ilustracji widoczna jest opcja wyboru domyślnej CAPTCHA w konfiguracji globalnej Joomla!, czyli mechanizmu służącego do ochrony formularzy przed botami. Łatwo tu wpaść w kilka typowych pułapek myślowych i skojarzyć ten element z innymi funkcjami bezpieczeństwa lub interfejsu, które z CAPTCHA nie mają wiele wspólnego. Częstym błędem jest utożsamianie każdego „zabezpieczenia” w panelu administracyjnym z ochroną przed SQL Injection lub innymi atakami na bazę danych. Ochrona przed SQL Injection polega na poprawnym programowaniu po stronie serwera: stosowaniu przygotowanych zapytań (prepared statements), filtrowaniu i walidacji danych wejściowych, poprawnym użyciu API bazy danych. CAPTCHA w ogóle nie dotyka warstwy SQL – jej zadaniem jest ograniczenie liczby automatycznych zgłoszeń z formularzy, a nie filtrowanie treści pod kątem złośliwych zapytań. To jest inna warstwa zabezpieczeń. Podobnie mylące bywa skojarzenie z wyszukiwarką na stronie. Okno wyszukiwania to zwykły formularz z polem tekstowym, którego wygląd i działanie zależy od modułu lub komponentu wyszukiwarki, a nie od globalnej opcji „Domyślna CAPTCHA”. Ustawienie CAPTCHA nie dodaje żadnego pola wyszukiwania, nie wpływa też na mechanizm przeszukiwania treści, tylko na to, czy przed wysłaniem formularza pojawi się test antybotowy. Kolejne skojarzenie to okna związane z RODO i zgodą na pliki cookie. Bannery cookie, pop-upy z informacją o polityce prywatności czy zgody marketingowe są realizowane przez osobne wtyczki lub skrypty JavaScript, często całkowicie niezależne od mechanizmu CAPTCHA. Ich zadaniem jest spełnienie wymogów prawnych, a nie weryfikacja, czy użytkownik jest człowiekiem. CAPTCHA nie służy do obsługi zgód na cookies, nie zarządza ciasteczkami, nie pokazuje komunikatów o prywatności. Sedno tej opcji w Joomla! polega na wskazaniu, który mechanizm antybotowy ma być standardowo używany w formularzach. Dzięki temu dane z formularzy mogą być przyjmowane tylko wtedy, gdy użytkownik przejdzie test potwierdzający, że nie jest automatem. Jeśli myli się tę funkcję z wyszukiwaniem, banerem cookie czy obroną przed SQL Injection, to w praktyce oznacza niezrozumienie warstwowego podejścia do bezpieczeństwa i użyteczności: CAPTCHA to filtr na poziomie interakcji człowiek–formularz, a nie ogólny „magiczny przełącznik” bezpieczeństwa lub interfejsu.

Pytanie 8

Aby cofnąć uprawnienia dostępu do serwera MySQL, należy wykorzystać polecenie

A. USAGE
B. REVOKE
C. DELETE
D. GRANT
Aby odebrać prawa dostępu do serwera MySQL, używa się polecenia REVOKE. To polecenie jest kluczowe w zarządzaniu uprawnieniami użytkowników w systemie zarządzania bazą danych MySQL. REVOKE pozwala na usunięcie wcześniej przydzielonych praw dostępu do określonych zasobów, takich jak tabele, bazy danych lub inne obiekty. Przykładowo, aby odebrać prawo SELECT dla użytkownika 'janek' na tabeli 'produkty', należy użyć komendy: REVOKE SELECT ON produkty FROM 'janek'@'localhost';. Dzięki temu użytkownik 'janek' nie będzie miał możliwości wykonywania zapytań SELECT na tej tabeli. Warto zaznaczyć, że REVOKE działa w oparciu o hierarchię uprawnień, co oznacza, że można je łączyć z innymi poleceniami, aby skutecznie zarządzać dostępem. Zgodnie z dokumentacją MySQL, REVOKE jest integralną częścią systemu autoryzacji, co czyni je niezbędnym dla zapewnienia bezpieczeństwa danych w bazach danych. Użycie REVOKE jest również istotne w kontekście audytów bezpieczeństwa, gdzie konieczne jest zarządzanie dostępem do danych.

Pytanie 9

Aby obraz dodany za pomocą kodu HTML był zrozumiały dla programów wspierających osoby niewidome, konieczne jest zdefiniowanie atrybutu

A. sizes
B. src
C. alt
D. border
Atrybut 'alt' w znaczniku <img> jest kluczowy dla dostępności treści internetowych. Jego główną funkcją jest dostarczenie alternatywnego opisu obrazu, który jest odczytywany przez programy wspierające osoby niewidome i niedowidzące, takie jak czytniki ekranu. Dzięki atrybutowi 'alt', użytkownicy, którzy nie mogą zobaczyć obrazu, są w stanie zrozumieć, co on przedstawia. Na przykład, jeśli obrazek przedstawia psa bawiącego się w parku, odpowiednia treść atrybutu 'alt' mogłaby brzmieć: 'Pies bawiący się w parku'. To nie tylko zwiększa dostępność strony, ale również poprawia doświadczenia użytkowników. Zgodnie z wytycznymi WCAG (Web Content Accessibility Guidelines), dostarczenie tekstu alternatywnego dla wszystkich obrazów jest niezbędne do zapewnienia pełnej dostępności treści. Przykład zastosowania: W przypadku strony e-commerce, gdzie obrazy produktów są kluczowe, odpowiednio zdefiniowany atrybut 'alt' pozwala osobom z ograniczeniami wzrokowymi na pełne zrozumienie oferty, co może wpłynąć na ich decyzje zakupowe.

Pytanie 10

SELECT miasto, AVG(pensja) FROM pracownicy GROUP BY miasto;
Podane zapytanie wybierze:
A. nazwy miast z powtórzeniami oraz sumę pensji dla każdego z nich.
B. nazwy miast bez powtórzeń oraz sumę pensji dla każdego z nich.
C. nazwy miast z powtórzeniami oraz średnią pensję dla każdego z nich.
D. nazwy miast bez powtórzeń oraz średnią pensję dla każdego z nich.
Poprawnie – w tym zapytaniu kluczowe są dwie rzeczy: funkcja agregująca AVG(pensja) oraz klauzula GROUP BY miasto. Funkcja AVG oblicza średnią arytmetyczną z wartości w danej kolumnie, a nie sumę. To znaczy, że dla każdego miasta baza danych zbierze wszystkie rekordy pracowników z tym miastem, policzy z ich pensji średnią i zwróci jeden wiersz z wynikiem. GROUP BY powoduje, że kolumna miasto staje się kolumną grupującą, więc w wyniku każde miasto pojawi się tylko raz – bez powtórzeń, niezależnie od tego, ilu pracowników z danego miasta jest w tabeli. W praktyce takie zapytanie jest bardzo często używane w raportach i analizach: można w ten sposób sprawdzić, w którym mieście średnia pensja jest najwyższa, porównać poziomy wynagrodzeń między oddziałami firmy, czy przygotować zestawienie dla działu HR albo zarządu. Dobrą praktyką jest nadawanie aliasów kolumnom z funkcjami agregującymi, np.: SELECT miasto, AVG(pensja) AS srednia_pensja FROM pracownicy GROUP BY miasto; Dzięki temu wynik jest czytelniejszy, zwłaszcza gdy dane eksportuje się dalej, np. do Excela lub do aplikacji webowej. Warto też pamiętać, że w standardowym SQL w części SELECT przy użyciu GROUP BY można umieszczać tylko kolumny, po których grupujemy, oraz funkcje agregujące (AVG, SUM, COUNT, MIN, MAX itd.). Jeżeli spróbujemy dodać tam inną zwykłą kolumnę bez agregacji, większość silników bazodanowych zgłosi błąd albo zwróci nieprzewidywalne wartości. Z mojego doświadczenia znajomość takich prostych konstrukcji jak GROUP BY + AVG to absolutna podstawa przy projektowaniu raportów i aplikacji, które polegają na danych biznesowych.

Pytanie 11

Obejrzyj tabelę mieszkań, która zawiera kolumny: adres, metraż, ile_pokoi, standard, status, cena. Wykonanie poniższej kwerendy SQL SELECT spowoduje wyświetlenie:

SELECT metraz, cena FROM mieszkania WHERE ile_pokoi > 3;
A. metraż oraz cena tych mieszkań, które posiadają co najmniej 3 pokoje
B. wszystkie informacje, z wyjątkiem adresu, dotyczące mieszkań z więcej niż 3 pokojami
C. wszystkie dane mieszkań, które mają co najmniej 3 pokoje
D. metraż oraz cena tych mieszkań, które mają więcej niż 3 pokoje
Odpowiedź wskazująca na metraż oraz cenę mieszkań, które mają więcej niż 3 pokoje jest prawidłowa, ponieważ kwerenda SQL wykorzystuje operator '>', co oznacza, że wybrani będą tylko ci, którzy mają co najmniej 4 pokoje. W kontekście tabeli mieszkania, zapytanie SELECT metraz, cena FROM mieszkania WHERE ile_pokoi > 3; efektywnie filtruje dane, aby zwrócić tylko kolumny metraż oraz cena dla mieszkań spełniających ten warunek. W praktyce, umiejętność pisania takich zapytań SQL jest kluczowa w pracy z bazami danych, gdzie często potrzebne jest zrozumienie struktury danych i umiejętność ich analizy. Przykładem zastosowania może być analiza rynku nieruchomości, gdzie deweloperzy mogą chcieć zbadać ceny mieszkań większych niż 3 pokoje, aby lepiej dostosować swoje oferty do potrzeb klientów. Warto również zaznaczyć, że takie zapytania powinny być pisane zgodnie z najlepszymi praktykami, takimi jak unikanie selekcji niepotrzebnych danych, co przyspiesza ich przetwarzanie oraz zmniejsza obciążenie bazy danych.

Pytanie 12

W języku PHP do zmiennej a wprowadzono tekst, w którym wielokrotnie występuje fraza Kowalski. Jakim poleceniem można jednocześnie zamienić wszystkie pojawienia się słowa Kowalski na słowo Nowak w zmiennej a?

A. $a = str_replace('Nowak', 'Kowalski');
B. $a = str_rep('Kowalski', 'Nowak', $a);
C. $a = str_replace('Nowak', 'Kowalski', $a);
D. $a = str_replace('Kowalski', 'Nowak', $a);
Odpowiedź $a = str_replace('Kowalski', 'Nowak', $a); jest poprawna, ponieważ wykorzystuje funkcję str_replace, która jest standardowym narzędziem w PHP do zamiany wszystkich wystąpień określonego ciągu znaków na inny w danym tekście. W tym przypadku zamieniamy słowo 'Kowalski' na 'Nowak' wewnątrz zmiennej $a. Funkcja str_replace działa w sposób, który jest zgodny z dobrymi praktykami programistycznymi, pozwalając na prostą i efektywną manipulację łańcuchami tekstowymi. Przykład zastosowania: jeśli $a = 'Jan Kowalski jest programistą. Kowalski ma doświadczenie.', to po wykonaniu powyższego polecenia zmienna $a stanie się 'Jan Nowak jest programistą. Nowak ma doświadczenie.'. Warto pamiętać, że str_replace jest wrażliwa na wielkość liter, co oznacza, że najlepiej stosować ją w kontekście, gdzie zapisy są jednolite. Dodatkowo, funkcja ta zwraca nowy łańcuch znaków, co oznacza, że oryginalna zmienna $a pozostaje niezmieniona, co jest zgodne z zasadami programowania funkcyjnego.

Pytanie 13

W języku SQL używanym przez bazę danych MySQL atrybut UNIQUE w poleceniu CREATE TABLE

A. wymusza niepowtarzalne nazwy kolumn tabeli
B. jest używany, jeżeli wartości w danej kolumnie nie mogą się powtarzać
C. uniemożliwia wprowadzenie wartości NULL
D. jest stosowany jedynie w przypadku kolumn liczbowych
Atrybut UNIQUE w poleceniu CREATE TABLE w języku SQL dla bazy danych MySQL jest kluczowym elementem, który zapewnia, że wartości w danej kolumnie są unikalne dla każdego rekordu w tabeli. Oznacza to, że nie może istnieć więcej niż jeden rekord z taką samą wartością w kolumnie oznaczonej tym atrybutem. Dzięki temu, gdy projektujemy bazę danych, możemy zagwarantować integralność danych oraz ich spójność, co jest szczególnie istotne w przypadku kluczowych informacji, jak identyfikatory użytkowników czy numery seryjne produktów. Na przykład, jeżeli mamy tabelę użytkowników z kolumną 'email', możemy zastosować atrybut UNIQUE, aby upewnić się, że każdy użytkownik ma unikalny adres e-mail. W praktyce, jeżeli spróbujemy wprowadzić dwa rekordy z tym samym adresem e-mail, baza danych zgłosi błąd. Warto zauważyć, że atrybut UNIQUE pozwala na wprowadzenie wartości NULL, o ile nie ma innych wartości w danej kolumnie. Zgodnie z zasadami normalizacji danych, stosowanie atrybutu UNIQUE jest standardowym podejściem do zapewnienia jakości danych i ich unikalności w systemach zarządzania bazami danych.

Pytanie 14

Aby umożliwić wybór kilku opcji jednocześnie w rozwijanej liście formularza HTML, należy dodać atrybut do znacznika select

Ilustracja do pytania
A. multiple
B. value
C. disabled
D. size
Atrybut multiple w znaczniku select w HTML to super sprawa, bo dzięki niemu można zaznaczyć więcej niż jedną opcję z listy rozwijalnej. To się przydaje, jak ktoś musi wybrać kilka elementów w formularzu. Jak dodasz atrybut multiple, to przeglądarka pokazuje to jako pole do wyboru, gdzie można klikać na kilka wartości za pomocą klawiszy Ctrl albo Shift. Fajnie, że ten atrybut nie wymaga żadnych dodatkowych wartości, wystarczy, że go wrzucisz do znacznika select. To zgodne z dobrymi praktykami UX, bo pozwala na większą elastyczność i interaktywność formularzy. Co więcej, nie trzeba być programistycznym guru, żeby to wdrożyć, więc każdy może to zrobić. Używa się go w różnych aplikacjach webowych, zwłaszcza tam, gdzie zbieranie danych od użytkowników w prosty i przejrzysty sposób jest ważne.

Pytanie 15

Jakie parametry powinny być ustawione w funkcji biblioteki mysqli, aby umożliwić połączenie z serwerem oraz bazą danych?

mysqli_connect($a, $b, $c, $d) or die('Brak połączenia z serwerem MySQL.');
A. adres serwera - $a, nazwa bazy danych - $d, login - $b, hasło - $c
B. adres serwera - $c, nazwa bazy danych - $d, login - $b, hasło - $a
C. adres serwera - $a, nazwa bazy danych - $b, login - $c, hasło - $d
D. adres serwera - $c, nazwa bazy danych - $d, login - $a, hasło - $b
W przypadku niepoprawnych odpowiedzi można zauważyć typowe błędy związane z zrozumieniem argumentów funkcji mysqli_connect. Wiele osób myli kolejność zmiennych oraz ich znaczenie. Na przykład, podanie adresu serwera jako $c lub $d jest błędne, ponieważ pierwszy argument zawsze powinien wskazywać na adres serwera. Warto również zwrócić uwagę na znaczenie loginu i hasła – nie można ich zamieniać miejscami, ponieważ każdy z tych parametrów pełni inną funkcję w kontekście autoryzacji do bazy danych. W ramach dobrych praktyk programistycznych, istotne jest także stosowanie raz jeszcze uwierzytelnienia użytkownika, co pozwala uniknąć nieautoryzowanego dostępu do danych. Przykłady niepoprawnych odpowiedzi pokazują też, że błędne przypisanie nazw bazy danych do zmiennych może prowadzić do błędów w aplikacji, co w efekcie utrudnia jej działanie oraz zwiększa ryzyko wycieków danych. Kluczowe jest zrozumienie, że każdy parametr pełni specyficzną rolę w tworzeniu połączenia. Niezrozumienie tego kontekstu może prowadzić do trudności w dalszym programowaniu oraz w diagnostyce problemów z bazą danych.

Pytanie 16

Jakie oprogramowanie służy do obróbki dźwięku?

A. Audacity
B. Brasero
C. Winamp
D. RealPlayer
Wybór Brasero, Winampa czy RealPlayera jako programów do edycji dźwięku jest błędny, ponieważ każdy z nich pełni inną funkcję, która nie obejmuje zaawansowanej edycji audio. Brasero to program do nagrywania płyt, który umożliwia użytkownikom tworzenie obrazów dysków oraz nagrywanie danych na nośnikach optycznych. Jego głównym celem jest zarządzanie danymi, a nie edytowanie dźwięku, co czyni go nieodpowiednim w kontekście tego pytania. Winamp, z kolei, był popularnym odtwarzaczem multimedialnym, który skoncentrował się na odtwarzaniu plików audio i wideo, a jego funkcje ograniczały się do podstawowej obsługi dźwięku, bez zaawansowanych możliwości obróbczych. RealPlayer również skupia się głównie na odtwarzaniu materiałów wideo i audio, a jego funkcje edycyjne są bardzo ograniczone, co sprawia, że nie jest to narzędzie odpowiednie do poważnej edycji dźwięku. Użytkownicy mogą mylić te aplikacje z programami do edycji dźwięku z uwagi na ich popularność, jednak kluczowe jest zrozumienie różnicy między odtwarzaniem a edytowaniem audio. Właściwe podejście do wyboru narzędzi audio wymaga znajomości specyfikacji i zastosowania danego programu, co jest fundamentem w branży audio oraz w świecie produkcji dźwięku.

Pytanie 17

Jakie jest zadanie funkcji agregującej AVG w zapytaniu?

SELECT AVG(cena) FROM uslugi;
A. określić najwyższą wartość spośród cen usług
B. sprawdzić, ile usług znajduje się w tabeli
C. obliczyć średnią arytmetyczną wartości wszystkich usług
D. zliczyć całkowity koszt wszystkich usług
Funkcja AVG w SQL jest jednym z podstawowych narzędzi do analizy danych w bazach danych. Jej głównym celem jest obliczenie średniej arytmetycznej wartości w kolumnie, co jest kluczowe w raportowaniu i analizie danych. W zapytaniu SQL SELECT AVG(cena) FROM uslugi; funkcja AVG jest użyta, aby uzyskać średnią cenę wszystkich usług zapisanych w tabeli uslugi. Taka średnia jest przydatna w wielu kontekstach biznesowych na przykład przy tworzeniu raportów finansowych czy analizie kosztów w celu optymalizacji oferty. Średnia arytmetyczna pozwala zrozumieć przeciętną wartość danego zestawu danych co jest istotne w podejmowaniu decyzji. Standardy branżowe zalecają użycie funkcji AVG wszędzie tam gdzie potrzebna jest szybka i efektywna analiza danych liczbowych. Zrozumienie działania funkcji AVG jest kluczowe w pracy z bazami danych SQL gdyż pozwala na bardziej złożone analizy jak np. porównanie średnich z różnych okresów czasu lub segmentów rynku.

Pytanie 18

Po zrealizowaniu przedstawionego fragmentu kodu w języku C/C++ do zmiennej o nazwie zmienna2 przypisany zostanie ```int zmienna1 = 158; int *zmienna2 = &zmienna1;```

A. przypisana ta sama wartość, która jest przechowywana w zmienna1
B. przypisany adres zmiennej o nazwie zmienna1
C. przypisana liczba w kodzie binarnym odpowiadająca wartości, która jest przechowywana w zmienna1
D. przypisana zamieniona na łańcuch wartość, która jest przechowywana w zmienna1
W odpowiedzi 1 stwierdzono, że zmiennej zmienna2 zostanie przypisany adres zmiennej zmienna1. To stwierdzenie jest poprawne, ponieważ w kodzie C/C++ operator '&' jest używany do uzyskania adresu zmiennej. W prezentowanym fragmencie kodu zmienna2 jest wskaźnikiem, który przechowuje adres zmiennej zmienna1, co oznacza, że zmienna2 wskazuje na lokalizację w pamięci, w której przechowywana jest wartość zmiennej zmienna1. Takie podejście jest kluczowe w programowaniu niskopoziomowym, gdzie manipulacja adresami pamięci jest często wykorzystywana do efektywnego zarządzania zasobami. Przykład praktyczny to dynamiczna alokacja pamięci, gdzie programista może przydzielać i zwalniać pamięć w trakcie działania programu, co jest możliwe dzięki wskaźnikom. Zrozumienie wskaźników i adresów jest fundamentalne w C/C++, a ich właściwe użycie przyczynia się do optymalizacji kodu oraz umożliwia tworzenie bardziej złożonych struktur danych, takich jak listy, stosy czy kolejki.

Pytanie 19

Algorytm przedstawiony na rysunku można zapisać w języku JavaScript za pomocą instrukcji

A. for(i = 0; i > 10; i++)

B. var i = 0;
   while(i <= 10)
     i += 2;

C. var i = 0;
   do
     i++;
   while(i > 10);

D. var i = 0;
   do
     i = i + 2;
   while(i < 10);
Ilustracja do pytania
A. D.
B. A.
C. C.
D. B.
Dobrze! Wybrałeś prawidłową odpowiedź B. Biorąc pod uwagę wykres przepływu, zmienna 'i' jest inicjalizowana wartością 0 i następnie w pętli zwiększana o 2, dopóki jej wartość nie przekroczy 10. Wprowadzona instrukcja w JavaScript (var i = 0; while(i <= 10) { i += 2; }) idealnie odzwierciedla proces przedstawiony na diagramie. Inicjalizacja zmiennej jest ważnym krokiem w programowaniu, który pozwala na użycie zmiennej w kodzie, a pętla 'while' jest często stosowana do wykonywania części kodu wielokrotnie do momentu, aż warunek przestanie być spełniony. W tym przypadku, warunkiem jest 'i' mniejsze lub równe 10, a kod wewnątrz pętli zwiększa wartość 'i' o 2 za każdym razem, gdy jest wykonywany. Jest to typowy przykład użycia pętli i operatorów w języku JavaScript.

Pytanie 20

W C++ stworzono zmienną: char zm1;. Jak można przypisać do niej wartość, zgodnie ze składnią tego języka?

A. zm1 = 'w'
B. zm1 = "wiadro"
C. zm1 == 0x35
D. zm1[2] = 32
Odpowiedź 'zm1 = 'w';' jest prawidłowa, ponieważ w języku C++ zmienna typu char służy do przechowywania pojedynczego znaku. Przypisując wartość 'w', używamy pojedynczych apostrofów, co jest zgodne z syntaktyką C++. Przykładowo, możemy wykorzystać tę zmienną w programie do przechowywania litery, która następnie będzie mogła być użyta w różnych operacjach, takich jak wyświetlenie na ekranie czy do porównań. W dobrych praktykach programowania ważne jest, aby zmienne były odpowiednio zdefiniowane i przypisywane zgodnie z ich typami. Użycie char jest zalecane w sytuacjach, gdy potrzebujemy efektywnego przechowywania znaków, co jest kluczowe w optymalizacji pamięci. Innym przykładem może być tworzenie prostych gier tekstowych, w których każdy znak ma swoje znaczenie i wpływa na logikę gry. Oprócz tego, warto wspomnieć, że w C++ istnieją różne typy danych do przechowywania tekstów, jak string, ale dla pojedynczych znaków char jest najodpowiedniejszym typem.

Pytanie 21

Model barw o parametrach: odcień, nasycenie, jasność i przezroczystość, to

A. SRGB
B. HSLA
C. RGBA
D. CMYK
W tym pytaniu chodzi o model barw, w którym występują dokładnie cztery parametry: odcień, nasycenie, jasność i przezroczystość. Kluczowe są tu trzy pierwsze słowa: odcień, nasycenie, jasność. To już samo w sobie powinno kierować myślenie w stronę rodziny HSL/HSV, a nie klasycznego RGB czy modeli drukarskich takich jak CMYK. Typowym błędem jest patrzenie tylko na obecność kanału przezroczystości i automatyczne kojarzenie go z RGBA, bo wiele osób zapamiętuje po prostu „A = alpha, czyli przeźroczystość”, bez zwracania uwagi na to, jakie są pozostałe składowe. W modelu RGBA mamy składniki Red, Green, Blue plus Alpha. Nie ma tam odcienia, nasycenia i jasności jako osobnych parametrów, tylko trzy liczby opisujące natężenie podstawowych składowych RGB. To oczywiście też może zawierać informację o kolorze, ale w zupełnie inny sposób. Jeżeli w pytaniu pojawia się słowo „odcień”, to z mojego doświadczenia w zadaniach testowych prawie zawsze chodzi o HSL/HSLA albo HSV/HSVA, bo tam kolor opisuje się kołem barw i procentami. Samo SRGB to nie jest model z parametrami odcień–nasycenie–jasność–przezroczystość, tylko standardowa przestrzeń barw RGB dla monitorów, zdefiniowana m.in. przez konsorcjum W3C i Microsoft. W CSS co prawda używamy funkcji `rgb()` czy `rgba()`, ale to tylko zapisy w przestrzeni sRGB, a nie osobny czteroparametrowy model jak w treści pytania. Wybranie SRGB często wynika z tego, że ktoś kojarzy skrót z „kolorami w przeglądarce”, ale to za mało, bo pytanie precyzyjnie opisuje właściwości. Z kolei CMYK jest modelem typowo poligraficznym: Cyan, Magenta, Yellow, Key (Black). Stosuje się go w druku, a nie w definicjach kolorów w CSS i nie ma tam żadnego kanału alpha ani parametrów odcień/nasycenie/jasność. Mylenie CMYK z HSL/HSLA to zwykle wynik tego, że ktoś kojarzy „inny niż RGB, więc może ten”. W projektowaniu stron WWW i interfejsów użytkownika, zgodnie z dobrymi praktykami front-end, warto rozróżniać: RGB/RGBA – składowe podstawowych barw światła, HSLA – odcień, nasycenie, jasność plus alpha, CMYK – druk, a sRGB – nazwa przestrzeni, nie czteroelementowego modelu H+S+L+A.

Pytanie 22

Jakie będzie działanie podanych instrukcji JavaScript?

var elementy = document.getElementsByClassName("styl1");
  for(var i = 0; i < elementy.length; i++)
    elementy[i].style.fontWeight = "bolder";
A. Jedynie dla elementu o id równym styl1 będzie przypisany styl pogrubienia tekstu na bolder
B. Wyłącznie dla pierwszego elementu przypisanego do klasy styl1 zostanie nadany styl pogrubienia tekstu bolder
C. Dla wszystkich elementów na stronie zostanie zastosowany styl pogrubienia tekstu na bolder
D. Dla wszystkich elementów przypisanych do klasy styl1 zostanie nadany styl pogrubienia tekstu bolder
Instrukcje JavaScript w pytaniu wykorzystują metodę getElementsByClassName aby pobrać kolekcję wszystkich elementów na stronie które posiadają przypisaną klasę styl1. Metoda ta zwraca obiekt typu HTMLCollection który przypomina tablicę i zawiera odniesienia do elementów DOM posiadających określoną klasę. Następnie za pomocą pętli for przechodzimy przez każdy z tych elementów i zmieniamy ich styl na bolder przypisując nową wartość do właściwości style.fontWeight. Dzięki temu każdy element w kolekcji zostaje zmodyfikowany i wyświetlany z pogrubioną czcionką. Takie podejście jest zgodne z dobrymi praktykami w zakresie manipulacji DOM w JavaScript gdyż jest to sposób efektywny i bezpośredni. Użycie klas do grupowania elementów HTML pozwala na jednoczesne stosowanie stylów i operacji na grupach elementów co jest kluczowe w dynamicznym modelu tworzenia stron internetowych. Warto zwrócić uwagę na fakt że nazwy klas są czułe na wielkość liter co oznacza że styl1 i Styl1 byłyby traktowane jako różne klasy.

Pytanie 23

Jakie wyniki zostaną wyświetlone po wykonaniu podanej w ramce kwerendy SQL SELECT na tabeli pracownicy, która zawiera rekordy?

idimienazwiskopensja
1AnnaKowalska3400
2MonikaNowak1300
3EwelinaNowakowska2600
4AnnaPrzybylska4600
5MariaKowal2200
6EwaNowacka5400
SELECT SUM(pensja) FROM pracownicy WHERE pensja > 4000;
A. Kwota 10000, co stanowi sumę pensji pracowników o id=4 i id=6
B. Kwota 5400, co oznacza najwyższą pensję wśród pracowników
C. Kwota 19500, czyli suma wszystkich pensji zatrudnionych
D. Dwie kwoty: 4600 oraz 5400, jako wynagrodzenia pracowników przekraczające 4000
W zapytaniu SQL użyto funkcji agregującej SUM, która służy do sumowania wartości w określonej kolumnie. Klauzula WHERE ogranicza zbiór rekordów do tych, które spełniają dany warunek. W tym przypadku, pensja musi być większa niż 4000. Analizując tabelę, znajdujemy dwie osoby z pensjami spełniającymi ten warunek: pracownik o id=4 z pensją 4600 oraz pracownik o id=6 z pensją 5400. SUM(4600 + 5400) daje 10000. Prawidłowe zrozumienie wykorzystania funkcji agregujących w SQL jest kluczowe w analizie danych i raportowaniu. Jest to standardowa praktyka w branży IT, gdzie analiza danych jest podstawą przy podejmowaniu decyzji biznesowych. Funkcje agregujące, takie jak SUM, AVG, MAX, są fundamentalnymi narzędziami analitycznymi w bazach danych. Przy pracy nad większymi zbiorami danych, takie zapytania pomagają szybko uzyskać podsumowania, co jest nieocenione w analizie finansowej czy tworzeniu raportów zarządczych.

Pytanie 24

W podanym kodzie JavaScript ponumerowano linie dla ułatwienia. W programie występuje błąd, ponieważ po wykonaniu żadna wiadomość nie jest wyświetlana. Aby usunąć ten błąd, należy

1. if (a < b)
2. document.write(a);
3. document.write(" jest mniejsze");
4. else
5. document.write(b);
6. document.write(" jest mniejsze");
A. w liniach 3 i 6 zamienić znaki cudzysłowu na apostrof, np. ' jest mniejsze'
B. dodać nawiasy klamrowe w sekcjach if oraz else
C. w liniach 2 i 5 zmienne a i b umieścić w cudzysłowach
D. umieścić znaki $ przed nazwami zmiennych
Wstawienie nawiasów klamrowych do sekcji 'if' oraz 'else' jest kluczowe dla prawidłowego działania kodu w JavaScript. Kiedy nie używamy nawiasów klamrowych, język domyślnie interpretuje tylko jedną linię jako część bloku 'if' lub 'else'. W sytuacji, gdy mamy więcej niż jedną operację do wykonania w ramach tego samego warunku, brak nawiasów prowadzi do błędów wykonania. Przykład: jeśli chcemy wyświetlić komunikat oraz wartość zmiennej 'a', musimy objąć te operacje nawiasami klamrowymi. Warto również pamiętać, że korzystanie z nawiasów klamrowych zwiększa czytelność kodu, co jest zgodne z najlepszymi praktykami programistycznymi. Stosowanie tej zasady pozwala unikać niejednoznaczności i potencjalnych błędów w logicznych blokach kodu. Dodatkowo, pomocne jest testowanie kodu w środowiskach, które wyłapują błędy syntaktyczne, co ułatwia wczesne wykrywanie problemów.

Pytanie 25

Zapis CSS postaci:

 ul {
    list-style-image: url('rys.gif');
}

sprawi, że na stronie internetowej
A. wyświetli się rysunek rys.gif jako tło listy nienumerowanej.
B. punktorem listy nienumerowanej będzie rys.gif
C. każdy z punktów listy będzie miał osobne tło pobrane z grafiki rys.gif
D. rys.gif będzie stanowił ramkę dla listy nienumerowanej.
Gratulacje! Poprawnie zidentyfikowałeś, że w podanym kodzie CSS, obrazek 'rys.gif' będzie służył jako punktor listy nienumerowanej. Według standardów CSS, właściwość list-style-image jest używana do określenia obrazka, który będzie używany jako punktor w liście nienumerowanej. Zasada ta jest bardzo przydatna, kiedy chcemy stworzyć niestandardowe punktory listy, które lepiej pasują do designu naszej strony. Możemy użyć dowolnego obrazka, który jest dostępny online lub zasobu z naszej lokalnej przestrzeni roboczej. Pamiętaj jednak, że obrazek powinien być mały i czytelny. W tym konkretnym przypadku, obrazek 'rys.gif' zostanie ustawiony jako punktor dla każdego elementu listy <li> wewnątrz listy nienumerowanej <ul>. Używając tej techniki, możemy stworzyć atrakcyjniejsze i bardziej interaktywne listy na naszej stronie internetowej.

Pytanie 26

Warunek zapisany w języku PHP wypisze liczbę, gdy

if ($liczba % 2 == 0)
{
    echo $liczba;
}
A. jest ona dodatnia.
B. jest ona liczbą pierwszą.
C. wynik dzielenia liczby przez 2 jest równy 0.
D. jest ona parzysta.
Twoja odpowiedź jest poprawna. Warunek w języku PHP 'if($liczba % 2 == 0)' sprawdza faktycznie, czy dana liczba jest parzysta. Jak dobrze zauważyłeś, reszta z dzielenia liczby parzystej przez 2 jest zawsze równa 0. Jest to bezpośrednie odzwierciedlenie definicji liczby parzystej, która mówi, że jest to liczba, którą można podzielić przez 2 bez reszty. Dlatego warunek ten jest powszechnie stosowany w programowaniu do sprawdzania parzystości liczby. W praktyce, może on być wykorzystany np. do filtrowania danych, gdzie chcemy wykluczyć liczby nieparzyste albo też do różnego rodzaju operacji na tablicach, gdzie operacje wykonujemy tylko dla indeksów parzystych. Pamiętaj jednak, że ten warunek nie sprawdzi, czy liczba jest dodatnia, ujemna czy pierwsza. Do tego potrzebne będą inne warunki i operacje.

Pytanie 27

Jakie wartości zostaną wyświetlone kolejno w wyniku wykonania podanego skryptu?

<script language = "JavaScript">
var x = 1;
var y;
++y;
document.write(++x);
document.write(" ");
document.write(x--);
document.write(" ");
document.write(x);
</script>
A. 2 1 1
B. 1 2 2
C. 2 2 1
D. 1 2 1
Poprawna odpowiedź to 2 2 1 ponieważ skrypt modyfikuje wartość zmiennej x krok po kroku. Pierwsza instrukcja ++x zwiększa wartość x z 1 do 2 i wypisuje ją na ekranie. Jest to przykład preinkrementacji gdzie wartość zmiennej jest zwiększana przed jej użyciem w wyrażeniu. Drugie wywołanie x-- to postdekrementacja która najpierw zwraca bieżącą wartość zmiennej x czyli 2 a dopiero potem ją zmniejsza. Dlatego w wyniku druga wartość to również 2. Wreszcie ostatnia instrukcja wypisuje aktualną wartość x po dekrementacji która wynosi teraz 1. Tego typu operacje na zmiennych są kluczowe w programowaniu gdyż pozwalają na efektywną kontrolę nad przepływem danych i logiką sterującą w aplikacjach. Zrozumienie różnicy między pre- i post- inkrementacją jest istotne w kontekście optymalizacji kodu i zapobiegania potencjalnym błędom logicznym.

Pytanie 28

Jaką konstrukcją w języku C++ jest double *x;?

A. Wskaźnik
B. Formalny argument typu rzeczywistego
C. Zmienna całkowita
D. Zmienna rzeczywista
Wybór odpowiedzi, która sugeruje, że 'double *x;' jest parametrem formalnym typu rzeczywistego, jest nieprawidłowy, ponieważ wskaźnik nie jest sam w sobie parametrem formalnym. Parametry formalne w C++ są definiowane w nagłówkach funkcji i odnoszą się do zmiennych przekazywanych do funkcji. Wskaźnik, jak 'double *x;', jest po prostu zmienną, która przechowuje adres innej zmiennej, co jest zupełnie inną koncepcją. Z kolei określenie zmiennej całkowitej jest również błędne, ponieważ 'double' wskazuje na typ zmiennoprzecinkowy, a nie całkowity. Zrozumienie różnicy między typami danych jest kluczowe w C++. Ostatnia niepoprawna opcja, mówiąca o zmiennej rzeczywistej, nie odnosi się do wskaźnika, ponieważ wskaźnik nie jest zmienną przechowującą wartość typu 'double', ale adresem, pod którym taka wartość może być przechowywana. Typowe błędy myślowe, które mogą prowadzić do takich niepoprawnych odpowiedzi, obejmują mylenie pojęcia wskaźnika z typem zmiennej, a także brak zrozumienia roli wskaźników w kontekście zarządzania pamięcią i przekazywania danych do funkcji. Właściwe zrozumienie tych podstawowych koncepcji jest niezbędne do skutecznego programowania w C++.

Pytanie 29

Na zaprezentowanym schemacie bazy danych biblioteka, elementy takie jak: czytelnik, wypożyczenie oraz książka stanowią

Ilustracja do pytania
A. pola
B. atrybuty
C. encje
D. krotki
Prawidłowo – na takim schemacie bazy danych „czytelnik”, „wypożyczenie” i „książka” to encje. W modelowaniu danych najpierw identyfikujemy obiekty świata rzeczywistego, które chcemy odwzorować w systemie. W przypadku biblioteki naturalnymi obiektami są właśnie czytelnik, książka i konkretne wypożyczenie. W notacji ERD (Entity‑Relationship Diagram) każdy z tych obiektów opisujemy jako encję, a potem dopiero dodajemy jej atrybuty oraz relacje z innymi encjami. Na schemacie widzisz trzy prostokąty – to są właśnie encje. Każda encja ma zestaw atrybutów: dla encji „czytelnik” są to np. imię, nazwisko, ulica, miejscowość; dla encji „książka” – tytuł, autor, rok wydania; dla encji „wypożyczenie” – daty wypożyczenia i zwrotu, klucze obce do czytelnika i książki. W relacyjnej bazie danych te encje są potem najczęściej odwzorowane jako tabele: tabela CZYTELNIK, WYPOZYCZENIE, KSIAZKA. To jest dokładnie zgodne z dobrymi praktykami projektowania: najpierw model koncepcyjny (encje i relacje), dopiero później model logiczny (tabele, klucze, typy danych). Z mojego doświadczenia przy każdym poważniejszym projekcie bazodanowym analitycy najpierw rysują diagram encji, bo to pomaga zrozumieć domenę biznesową. Dzięki poprawnemu rozróżnieniu encji od atrybutów można uniknąć błędów typu powtarzanie tych samych danych w wielu miejscach czy trudności z raportowaniem. W bibliotece na przykład wypożyczenie musi być osobną encją, bo opisuje zdarzenie w czasie, ma własne atrybuty (daty) i łączy dwie inne encje relacjami. Taki sposób modelowania jest zgodny z klasycznymi podręcznikami baz danych (model encja‑związek) oraz z zasadami normalizacji.

Pytanie 30

Który link jest poprawnie sformułowany?

A. <a href=http://strona.pl>strona</a>
B. <a href="http://strona.pl">strona</a>
C. <a href="http::/strona.pl>strona</a>
D. <a src="/www.strona.pl">strona</a>
Odpowiedź <a href="http://strona.pl">strona</a> jest poprawna, ponieważ używa atrybutu "href" do definiowania odnośnika. Atrybut ten jest standardem w języku HTML i służy do określenia docelowego adresu URL, do którego ma prowadzić link. W przypadku tej odpowiedzi, składnia jest prawidłowa: adres URL jest umieszczony w cudzysłowach, a prefiks HTTP jest poprawny. W praktyce, poprawne użycie atrybutu href jest kluczowe dla zapewnienia, że użytkownicy mogą bezproblemowo nawigować po stronie internetowej. Na przykład, w dokumentacji HTML5, wyraźnie zaznaczone jest, że atrybut href powinien być używany, aby wskazać lokalizację zasobu. W rezultacie, stosując tę poprawną składnię, można uniknąć potencjalnych błędów w działaniu strony oraz poprawić jej dostępność, co jest istotne z punktu widzenia najlepszych praktyk webowych oraz SEO.

Pytanie 31

Jak nazywa się organizacja odpowiedzialna za wyznaczanie standardów dla języka HTML?

A. NASK
B. ISO
C. W3C
D. WYSIWYG
Organizacja zajmująca się ustalaniem standardu dla języka HTML nosi nazwę W3C, co oznacza World Wide Web Consortium. Jest to międzynarodowa społeczność, która opracowuje standardy internetowe i zapewnia ich udostępnienie. W3C zostało założone w 1994 roku przez Tima Berners-Lee, twórcę WWW, z celem wspierania rozwijania wspólnych standardów, które mają na celu zapewnienie długoterminowego wzrostu i interoperacyjności w sieci. Standard HTML, a także jego kolejne wersje, są kluczowymi elementami tej inicjatywy. W3C odpowiada również za inne standardy, takie jak CSS, XML czy SVG. Dbanie o zgodność oraz poprawność kodu HTML jest niezbędne dla zapewnienia właściwego działania stron internetowych w różnych przeglądarkach. Przykłady standardów, które W3C wprowadziło, to HTML5, który wprowadził nowe elementy, takie jak <article>, <section> czy <canvas>. Te standardy pozwalają na tworzenie bardziej zaawansowanych interfejsów użytkownika, lepszą dostępność oraz efektywność. Dlatego W3C odgrywa kluczową rolę w ekosystemie internetu, wpływając na sposób, w jaki tworzymy i konsumujemy treści online.

Pytanie 32

Gdy zmienna $x przechowuje dowolną dodatnią liczbę naturalną, poniższy kod źródłowy PHP ma na celu wyświetlenie:

$licznik = 0;
while ($licznik != $x) 
{
    echo $licznik;
    $licznik++;
}
A. kolejne liczby od 0 do x-1
B. liczby wprowadzane z klawiatury, aż do momentu wprowadzenia wartości x
C. przypadkowe liczby z zakresu (0, x)
D. kolejne liczby od x do 0
Poprawna odpowiedź to 'kolejne liczby od 0 do x-1'. Kod PHP w pętli 'while' wyświetla kolejne liczby naturalne, zaczynając od 0. Pętla ta będzie kontynuowana, dopóki zmienna $licznik nie osiągnie wartości x, czyli dopóki $licznik < x. Wartością ostatniej liczby, jaką pętla wyświetli, będzie zatem x-1, ponieważ wartość x nie jest już spełnieniem warunku pętli. To ważne rozróżnienie w programowaniu, gdzie często stosuje się różne typy pętli i konstrukcje sterujące. W praktyce, zrozumienie tego mechanizmu jest kluczowe dla manipulowania danymi i tworzenia skryptów o różnych funkcjonalnościach. Pętle są jednym z podstawowych elementów kontroli przepływu w większości języków programowania, a różne ich typy i zastosowania pozwalają na realizację różnorodnych zadań, od prostych operacji na danych do skomplikowanych algorytmów.

Pytanie 33

Rozmiary ekranu w formacie 16:9 (zakładając, że piksel jest kwadratem) można osiągnąć przy rozdzielczości

A. 800 na 480 pikseli
B. 1366 na 768 pikseli
C. 2560 na 2048 pikseli
D. 320 na 240 pikseli
Odpowiedź 1366 na 768 pikseli jest poprawna, ponieważ proporcja szerokości do wysokości wynosi dokładnie 16:9. Aby to obliczyć, dzielimy szerokość przez wysokość: 1366 / 768 = 1,78, co jest bliskie wartości 1,77 (16:9). Proporcje 16:9 stały się standardem w telewizji wysokiej rozdzielczości oraz w produkcji wideo, co oznacza, że są szeroko stosowane w przemysłach związanych z mediami i technologią. Przykładem zastosowania tej rozdzielczości może być wyświetlanie filmów na nowoczesnych telewizorach, gdzie forma obrazu 16:9 pozwala na pełne wykorzystanie ekranu bez czarnych pasków po bokach. Stosując to w projektach multimedialnych, warto zawsze dążyć do zgodności z tymi standardami, aby zapewnić optymalne wrażenia wizualne dla użytkowników. Zrozumienie tych proporcji jest kluczowe dla profesjonalistów zajmujących się grafiką, filmem i projektowaniem UX/UI.

Pytanie 34

Wskaż pętlę w języku JavaScript, która wypisze sześć kolejnych liczb parzystych.

A. for(i=2;i<=12;i+=2) {document.write(i);}
B. for(i=2;i<12;i++) {i++; document.write(i);}
C. for(i=2;i<12;i+=2) {document.write(i);}
D. for(i=2;i<=12;i++) {i=i+2; document.write(i);}
Prawidłowa odpowiedź to pętla for(i=2;i<=12;i+=2) {document.write(i);}, ponieważ jest ona skonstruowana w sposób, który pozwala na wyświetlenie sześciu kolejnych liczb parzystych, zaczynając od 2 do 12 włącznie. Pętla for składa się z trzech głównych części: inicjalizacji (i=2), warunku (i<=12) oraz inkrementacji (i+=2). Inicjalizacja ustawia zmienną i na 2, co jest pierwszą liczbą parzystą. Warunek i<=12 zapewnia, że pętla będzie kontynuowana do momentu, gdy i osiągnie wartość większą niż 12, co oznacza, że ostatnią liczbą, która zostanie wyświetlona, będzie 12. Inkrementacja i+=2 powoduje, że przy każdej iteracji wartość i zwiększa się o 2, co pozwala na przechodzenie pomiędzy kolejnymi liczbami parzystymi (2, 4, 6, 8, 10, 12). Taki sposób konstrukcji pętli jest zgodny z zasadami programowania w JavaScript oraz pozwala na efektywne i kontrolowane wyświetlanie danych na stronie. Istotne jest również, że wykorzystanie metody document.write() jest jedną z prostszych form wyświetlania danych w JavaScript, aczkolwiek w praktyce jest zalecane korzystanie z bardziej nowoczesnych metod, takich jak manipulacja DOM, aby uniknąć nadpisywania całej zawartości strony.

Pytanie 35

W języku CSS określono styl dla stopki. Aby zastosować to formatowanie do bloku oznaczonego znacznikiem div, należy wpisać

Ilustracja do pytania
A. <div class="stopka">
B. <div id="stopka">
C. <div "stopka">
D. <div title="stopka">
Poprawna odpowiedź to <div id="stopka"> ponieważ w CSS użycie selektora ID poprzedzonego znakiem # oznacza, że styl jest stosowany do elementu o określonym identyfikatorze. W HTML atrybut id jest unikalny w obrębie całego dokumentu co oznacza, że może być przypisany tylko do jednego elementu. Stosowanie identyfikatorów jest powszechną praktyką w przypadku stylizacji elementów, które pojawiają się tylko raz na stronie jak stopka nagłówek czy główny kontener treści. Przykład praktycznego zastosowania obejmuje sytuacje gdzie chcesz stylizować konkretną część strony internetowej zachowując jednorodność w całym projekcie. Dobrą praktyką jest również unikanie zbyt częstego używania id na rzecz klas które są bardziej elastyczne i mogą być stosowane do wielu elementów. Jednak w przypadku elementów unikalnych takich jak stopka użycie id jest zgodne z najlepszymi praktykami projektowania stron internetowych. Warto również pamiętać że selektory ID mają wyższy priorytet w CSS co oznacza że ich stylizacje nadpisują te zdefiniowane dla klas o tej samej specyfikacji.

Pytanie 36

Jaki zestaw terminów określa interfejs użytkownika witryny internetowej?

A. Obróbka danych, system zarządzania treścią, projektowanie informacji
B. Przesyłanie zapytań do bazy, skrypty PHP
C. Szkic strony, diagram witryny, diagram przepływu informacji
D. Przyciski, menu, interakcja użytkownika z aplikacją
Interfejs użytkownika (UI) strony internetowej to kluczowy element, który odpowiada za interakcję użytkownika z aplikacją internetową. W jego skład wchodzą różnorodne elementy, takie jak przyciski, menu, formularze, ikony oraz inne komponenty, które umożliwiają użytkownikowi nawigację, wprowadzanie danych oraz podejmowanie akcji. Zastosowanie standardów projektowania, takich jak Material Design czy Human Interface Guidelines, pozwala na tworzenie intuicyjnych i estetycznych interfejsów, co zwiększa użyteczność strony. Przykładowo, przycisk „Zatwierdź” umieszczony w formularzu powinien być wyraźnie oznaczony i łatwo dostępny, aby użytkownicy mogli szybko zakończyć proces rejestracji lub zakupu. Dobre praktyki w zakresie projektowania UI obejmują także responsywność, co oznacza, że interfejs powinien dostosowywać się do różnych rozmiarów ekranów, zapewniając optymalne wrażenia użytkownika na urządzeniach mobilnych oraz desktopowych. Interakcja użytkownika z aplikacją jest kluczowym aspektem, a właściwie zaprojektowany interfejs wpływa na satysfakcję użytkowników oraz ich skłonność do powrotu na stronę.

Pytanie 37

W PHP zmienna $_SERVER zawiera między innymi dane o

A. adresie IP serwera oraz nazwie protokołu
B. nazwie ciasteczek zapisanych na serwerze oraz powiązanych z nimi danych
C. informacjach związanych z sesjami
D. informacjach z formularza przetwarzanego na serwerze
Zmienna superglobalna $_SERVER w PHP gromadzi różnorodne informacje dotyczące bieżącego żądania HTTP oraz środowiska serwera. W szczególności przechowuje dane takie jak adres IP klienta, nazwa protokołu (np. HTTP/1.1), a także inne istotne informacje, takie jak metoda żądania (GET, POST) oraz nagłówki HTTP. Znajomość tych danych jest kluczowa w kontekście programowania aplikacji webowych, ponieważ umożliwia dostosowanie odpowiedzi serwera do specyficznych potrzeb klienta. Przykładowo, można wykorzystać $_SERVER['REMOTE_ADDR'], aby uzyskać adres IP odwiedzającego, co może być istotne w kontekście logowania użytkowników lub analizy ruchu. Ponadto, $_SERVER['SERVER_PROTOCOL'] pozwala na identyfikację używanego protokołu, co jest pomocne przy wdrażaniu funkcji zgodnych z określonymi standardami bezpieczeństwa i wydajności. Praktycznym zastosowaniem tych danych jest implementacja systemów uwierzytelniania lub ograniczanie dostępu na podstawie adresów IP, co wpisuje się w dobre praktyki bezpieczeństwa aplikacji webowych.

Pytanie 38

Znacznik <s> w HTML generuje

A. podkreślenie tekstu
B. przekreślenie tekstu
C. pochylenie tekstu
D. migotanie tekstu
Znacznik <s> w HTML służy do oznaczania tekstu, który jest przekreślony. To daje znać, że dany fragment już nie jest aktualny albo jest błędny. Myślę, że to bardzo ważne, bo z perspektywy semantyki w HTML, pozwala lepiej zrozumieć, co się dzieje na stronie. Użytkownicy korzystający z czytników ekranu mogą łatwiej zrozumieć, że coś jest nieaktualne. Przykładem mogą być sklepy internetowe, gdzie przekreślenie starej ceny pokazuje, że produkt jest teraz w promocji. Dobrze jest pamiętać, że stosowanie tych znaczników dobrze wpływa na strukturę dokumentu, co jest zgodne z wytycznymi W3C i poprawia dostępność w sieci.

Pytanie 39

W CSS zapis

a[target="_blank"] {color: yellow;}
spowoduje, że tekst linków przybierze kolor żółty.
A. linków, które otwierają się w tej samej karcie.
B. linków, które otwierają się w nowej karcie.
C. wszystkich linków.
D. treści akapitu.
Odpowiedź 'odnośników, które otwierają się w osobnej karcie' jest poprawna, ponieważ w CSS selektor 'a[target="_blank"]' odnosi się do elementów <a> (odnośników), które mają atrybut 'target' ustawiony na '_blank'. Oznacza to, że te odnośniki są zaprojektowane do otwierania linków w nowej karcie lub oknie przeglądarki. Przykład zastosowania: jeśli tworzymy stronę internetową z odnośnikami do zewnętrznych zasobów, użycie atrybutu 'target="_blank"' pozwala użytkownikom na zachowanie otwartej strony w przeglądarce. W CSS, kolor czcionki tych odnośników został ustawiony na żółty, co jest praktycznym podejściem do wyróżnienia ich w stosunku do innych linków. Warto również zauważyć, że stosowanie kolorów w kontekście dostępności jest istotne, dlatego dobór kolorów powinien być przemyślany, aby nie wpłynąć negatywnie na czytelność. Dobre praktyki obejmują również dodanie wskazówki do odnośnika, na przykład poprzez użycie atrybutu 'title', co jeszcze bardziej ułatwia użytkownikom zrozumienie, czego mogą się spodziewać po kliknięciu w link.

Pytanie 40

Wartość kolumny w tabeli, która działa jako klucz podstawowy

A. musi być unikalna
B. jest zawsze w formacie numerycznym
C. jest wykorzystywana do szyfrowania treści tabeli
D. może mieć wartość pustą (NULL)
Wartość pola tabeli pełniącego rolę klucza podstawowego musi być unikalna, ponieważ klucz podstawowy identyfikuje jednoznacznie każdy rekord w tabeli bazy danych. To oznacza, że żadna z wartości w tym polu nie może się powtarzać, co zapewnia integralność danych. Przykładem zastosowania klucza podstawowego jest identyfikator użytkownika (UserID) w tabeli z danymi użytkowników; każdy użytkownik ma przypisany unikalny identyfikator, co umożliwia jednoznaczną identyfikację jego danych. Standardy relacyjnych baz danych, takie jak SQL, nakładają te wymagania na klucze podstawowe, co jest kluczowe dla prawidłowego działania relacji między tabelami. Dobre praktyki w projektowaniu baz danych sugerują, aby klucze podstawowe były nie tylko unikalne, ale także stabilne (czyli nie zmieniały się w czasie), co ułatwia zarządzanie danymi i ich integrację w systemie. W przypadku naruszenia zasady unikalności klucza podstawowego mogą wystąpić problemy z integralnością referencyjną, co sprawia, że niemożliwe staje się prawidłowe powiązanie rekordów w różnych tabelach.