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: 29 kwietnia 2026 11:42
  • Data zakończenia: 29 kwietnia 2026 12:13

Egzamin zdany!

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

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 zaprezentowanym fragmencie algorytmu wykorzystano

Ilustracja do pytania
A. jedną pętlę
B. jeden blok decyzyjny
C. dwie pętle
D. trzy bloki operacyjne (procesy)
Na tym diagramie widać jedną pętlę, co jest dość ważne w programowaniu. Pętla pozwala na powtarzanie pewnych działań, aż spełni się jakiś warunek. Tu mamy blok decyzyjny, który mówi, czy proces ma trwać, czy się zakończyć. To dość powszechnie używane podejście, zwłaszcza w algorytmach, jak na przykład sortowanie czy obróbka danych. Warto zwrócić uwagę, by dobrze zrozumieć, jak działają pętle, szczególnie te oparte na warunkach, jak while czy for. Pozwoli to uniknąć problemów z niekończącymi się pętlami, które mogą sprawić, że program przestanie działać. Z mojego doświadczenia, ogarnać te struktury to kluczowy skill dla każdego, kto chce działać w IT.

Pytanie 2

Jednym z atrybutów tabeli ksiazki jest status czyWypozyczona, który może przyjmować dwie wartości: true lub false. Jaki typ danych będzie najbardziej odpowiedni dla tego atrybutu?

A. VARCHAR(5)
B. DOUBLE
C. CHAR
D. BOOLEAN
Odpowiedź BOOLEAN jest optymalnym wyborem dla pola status czyWypozyczona, ponieważ reprezentuje typ danych logicznych, które mogą przyjmować jedynie dwie wartości: prawda (true) lub fałsz (false). W kontekście systemów baz danych, typ BOOLEAN jest używany do efektywnego przechowywania informacji, które mają tylko dwa możliwe stany, co pozwala na oszczędność miejsca oraz przyspieszenie operacji zapytań. Na przykład, przy tworzeniu zapytań SQL, możemy łatwo filtrować wyniki na podstawie statusu wypożyczenia, co znacząco zwiększa czytelność i wydajność kodu. Warto również zauważyć, że wiele systemów baz danych, takich jak MySQL, PostgreSQL, czy SQLite, oferują dedykowane wsparcie dla typu BOOLEAN, co czyni go zgodnym z najlepszymi praktykami w projektowaniu baz danych, w których dąży się do maksymalnej klarowności i wydajności. Dzięki temu, stosując typ BOOLEAN, nie tylko upraszczamy model danych, ale także ułatwiamy jego dalsze wykorzystanie i konserwację.

Pytanie 3

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

A. "abc" > "def"
B. "def" > "abc"
C. "a" > "b"
D. "ab" > "c"
W języku JavaScript porównania między ciągami tekstowymi są realizowane zgodnie z zasadami porównania leksykalnego, które opierają się na porównywaniu wartości kodów Unicode. W przypadku porównania 'def' > 'abc', JavaScript analizuje każdy znak z osobna. 'd' ma wartość Unicode 100, a 'a' ma wartość 97. Ponieważ 100 jest większe od 97, całe porównanie zwraca true. W praktyce oznacza to, że ciąg 'def' jest alfabetycznie większy niż 'abc'. Zrozumienie porównania ciągów tekstowych jest kluczowe w programowaniu, zwłaszcza w kontekście sortowania danych, filtracji oraz walidacji wejść. Aby lepiej zrozumieć te zasady, warto zapoznać się z dokumentacją ECMAScript, która precyzyjnie opisuje sposób działania operatorów porównania w różnych kontekstach. Warto również zauważyć, że porównania są wrażliwe na wielkość liter, co oznacza, że 'Z' będzie mniejsze niż 'a'.

Pytanie 4

W podanym kodzie PHP, w miejscu kropek należy umieścić odpowiednią instrukcję

$zapytanie = mysqli_query($db, "SELECT imie, nazwisko FROM uzytkownik");
while ($wiersz = ...................)
    echo "$wiersz[0] $wiersz[1]";
A. mysqli_query($zapytanie)
B. mysqli_num_fields($zapytanie)
C. mysqli_free_result($zapytanie)
D. mysqli_fetch_array($zapytanie)
Funkcja mysqli_fetch_array($zapytanie) jest używana do pobierania wyników zapytania SQL w formie tablicy asocjacyjnej lub indeksowanej. W kontekście podanego kodu, po wykonaniu zapytania SELECT do bazy danych, wyniki są zwracane jako zasób, który musi być przetworzony. Mysqli_fetch_array pozwala na iteracyjne przetwarzanie każdego wiersza z zestawu wyników, co umożliwia dostęp do poszczególnych wartości pól za pomocą indeksów lub kluczy. Jest to przydatne w sytuacjach, gdzie dane muszą być wyświetlane lub przetwarzane w pętli, jak w przykładowym kodzie. Tablica zwracana przez mysqli_fetch_array może zawierać pola zarówno z indeksami numerycznymi, jak i nazwami kolumn, co daje elastyczność w dostępie do danych. Zgodnie z dobrymi praktykami programistycznymi, zawsze należy sprawdzić, czy zapytanie zostało wykonane poprawnie, zanim zacznie się przetwarzać jego wyniki, oraz zwolnić pamięć po zakończeniu przetwarzania wyników. Stosowanie odpowiednich mechanizmów obsługi błędów i zabezpieczeń, takich jak przygotowane zapytania, jest również kluczowe dla bezpieczeństwa aplikacji.

Pytanie 5

Który z typów plików dźwiękowych oferuje największą kompresję rozmiaru?

A. WAV
B. MP3
C. PCM
D. CD-Audio
Format MP3 (MPEG Audio Layer III) jest standardem kompresji stratnej, który znacząco zmniejsza rozmiar pliku dźwiękowego, zachowując przy tym akceptowalną jakość dźwięku. Technologia ta wykorzystuje algorytmy psychoakustyczne, które eliminują dźwięki, które są mniej słyszalne dla ludzkiego ucha. Dzięki temu możliwe jest osiągnięcie redukcji rozmiaru pliku o 70-90% w porównaniu z jakością oryginalnego nagrania. Praktyczne zastosowanie formatu MP3 jest szerokie: od przesyłania muzyki przez internet po użycie w odtwarzaczach multimedialnych oraz smartfonach. Możliwość dostosowania bitrate'u (od 32 kbps do 320 kbps) pozwala użytkownikom na balansowanie pomiędzy jakością a rozmiarem pliku. MP3 stał się de facto standardem w dystrybucji muzyki cyfrowej, a jego wsparcie w praktycznie każdym odtwarzaczu audio czyni go niezwykle uniwersalnym. Warto również dodać, że MP3 jest zgodny z wieloma standardami, takimi jak ID3, które umożliwiają dołączanie metadanych do plików audio, co dodatkowo podnosi jego funkcjonalność.

Pytanie 6

W systemie baz danych stworzono tabelę Mieszkancy zawierającą informacje. Aby usunąć tę tabelę wraz z danymi, należy użyć komendy

A. ALTER TABLE Mieszkancy;
B. TRUNCATE TABLE Mieszkancy;
C. DELETE FROM Mieszkancy;
D. DROP TABLE Mieszkancy;
Polecenie 'DROP TABLE Mieszkancy;' jest właściwym sposobem na usunięcie tabeli wraz z jej zawartością w bazie danych. To polecenie nie tylko usuwa tabelę, ale również wszystkie dane, które w niej się znajdują oraz wszelkie powiązania, takie jak klucze obce. W praktyce, gdy programista chce całkowicie wyeliminować strukturę tabeli oraz jej dane, wykorzystuje 'DROP TABLE'. Jest to szczególnie przydatne w sytuacjach, gdy tabela nie jest już potrzebna w systemie, a jej usunięcie pozwala na zwolnienie zasobów oraz uproszczenie struktury bazy danych. Warto również pamiętać, że przed wykonaniem tego polecenia warto stworzyć kopię zapasową danych, jeśli są one istotne, ponieważ operacja ta jest nieodwracalna. Ponadto, zgodnie z zasadami dobrych praktyk, przed usunięciem tabeli należy upewnić się, że nie ma na nią żadnych zależności w innych częściach bazy danych, aby uniknąć potencjalnych problemów z integralnością danych.

Pytanie 7

Na podstawie jakiego parametru oraz z ilu tabel zostaną zwrócone wiersze w wyniku przedstawionego zapytania?

SELECT * FROM producent, hurtownia, sklep, serwis
WHERE producent.nr_id = hurtownia.nr_id
AND producent.wyrob_id = serwis.wyrob_id
AND hurtownia.nr_id = sklep.nr_id
AND sklep.nr_id = serwis.nr_id
AND producent.nr_id = 1;
A. Na podstawie parametru wyrob_id wyłącznie z trzech tabel
B. Na podstawie parametru nr_id wyłącznie z trzech tabel
C. Na podstawie parametru nr_id ze wszystkich tabel
D. Na podstawie parametru wyrob_id ze wszystkich tabel
Zapytanie SQL używa parametru nr_id jako kluczowego elementu łączącego cztery tabele producent hurtownia sklep oraz serwis Dzięki temu zapytanie zwraca wiersze dla wszystkich tych tabel gdzie istnieje wspólna wartość nr_id W praktyce klucz taki jak nr_id jest używany do tworzenia relacji pomiędzy różnymi tabelami co jest podstawą w relacyjnych bazach danych Użycie tego samego klucza w zapytaniu umożliwia efektywne łączenie danych i jest zgodne z zasadami normalizacji danych która zmniejsza redundancję i poprawia integralność danych Praktycznym przykładem może być analiza danych sprzedażowych gdzie nr_id reprezentuje unikalny identyfikator zamówienia łączący dane producenta dystrybutora sklepu i serwisu W ten sposób można uzyskać pełny widok na procesy biznesowe we wszystkich etapach cyklu życia produktu Zachowanie tej struktury relacyjnej pozwala na szybkie i dokładne analizy co jest kluczowe w podejmowaniu decyzji biznesowych

Pytanie 8

Która z wartości tekstowych nie odpowiada podanemu wzorcowi wyrażenia regularnego?

(([A-ZŁŻ][a-ząęóżźćńłś]{2,})(-[A-ZŁŻ][a-ząęóżźćńłś]{2,}))?
A. Nowakowska-Kowalska
B. Jelenia Góra
C. Kasprowicza
D. Kowalski
Odpowiedź 'Jelenia Góra' jest nietrafiona. Wzór wyrażenia regularnego wymaga, żeby ciąg zaczynał się od wielkiej litery, a potem miał przynajmniej dwie małe litery. Dodatkowo, może być tam segment po myślniku z kolejną wielką literą, a na końcu małe litery. No i tutaj problem, bo 'Jelenia Góra' ma spację, a wzór nie lubi takich rzeczy, bo nie rozpoznaje spacji jako separatora. Z mojego doświadczenia w pracy z regexami, ważne jest, żeby takie elementy jak spacje były dokładnie przemyślane, szczególnie przy pracy z danymi. Im lepiej zrozumiesz te zasady, tym łatwiej będzie Ci pracować z różnymi przykładami i sytuacjami przy programowaniu. Także, warto pomyśleć o tym, jak optymalizować wzorce, żeby nasza praca była wydajniejsza i bezbłędna.

Pytanie 9

Przedstawione zapytanie SQL przydziela uprawnienie SELECT

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

Pytanie 10

Zmienne typu int odnoszą się do liczb całkowitych

A. w notacji stałoprzecinkowej
B. całkowitych
C. w notacji zmiennoprzecinkowej
D. naturalnych
Zmienne typu int w języku programowania odnoszą się do wartości całkowitych, co oznacza, że mogą przechowywać liczby bez części dziesiętnych. W zależności od konkretnego języka programowania, zmienne int mogą mieć różne zakresy wartości, które są determinowane przez liczbę bitów przydzielanych do ich reprezentacji. Na przykład, w języku C++ typ int najczęściej zajmuje 4 bajty (32 bity), co pozwala na reprezentację liczb w zakresie od -2 147 483 648 do 2 147 483 647. Wartości całkowite są szeroko stosowane w programowaniu do zliczania, indeksowania, a także kiedy precyzja jest kluczowa, na przykład w obliczeniach matematycznych, gdzie ułamki i wartości zmiennoprzecinkowe byłyby nieodpowiednie. Ważne jest również uwzględnienie standardów, takich jak ISO C, które definiują sposób działania typów danych w danym języku. Dla programistów znajomość zmiennych int i ich zastosowań jest podstawą efektywnego pisania algorytmów i rozwiązań problemowych.

Pytanie 11

Wymiary:4272x2848px
Rozdzielczość:72 dpi
Format:JPG

W ramce przedstawiono właściwości pliku graficznego. W celu optymalizacji czasu ładowania rysunku na stronę WWW należy
A. zmienić format grafiki na CDR
B. dostosować proporcje szerokości do wysokości
C. zmniejszyć rozmiary obrazu
D. zwiększyć rozdzielczość
Zwiększenie rozdzielczości nie jest zalecanym rozwiązaniem w kontekście optymalizacji czasu ładowania grafiki. Wyższa rozdzielczość zwiększa liczbę pikseli w obrazie, co skutkuje większym rozmiarem pliku, co w efekcie spowalnia czas ładowania strony. Dla obrazów przeznaczonych do wyświetlania w Internecie, standardowa rozdzielczość 72 dpi jest wystarczająca, a jej zwiększenie do 300 dpi lub więcej ma sens tylko w przypadku drukowania, gdzie jakość obrazu jest kluczowa. Zmiana formatu grafiki na CDR również nie jest odpowiednia w tym kontekście. CDR to format pliku stworzony przez program CorelDRAW, który jest stosunkowo niewłaściwy do publikacji w sieci. Pliki CDR są często większe od plików JPG i nie są szeroko wspierane przez przeglądarki internetowe. W związku z tym, ich użycie zamiast formatu JPG, który jest zoptymalizowany do szybkiego ładowania i wyświetlania w Internecie, stanowi nieefektywne podejście. Zmiana proporcji szerokości do wysokości również nie przynosi korzyści, ponieważ może prowadzić do zniekształcenia obrazu, co jest niepożądane z punktu widzenia estetyki i użyteczności. Dostosowanie proporcji może być istotne w przypadku określonych układów, jednak nie wpływa bezpośrednio na optymalizację rozmiaru pliku ani czasu ładowania. Celem optymalizacji jest uzyskanie właściwego balansu między jakością a rozmiarem pliku, a zmiana wymiarów jest najskuteczniejszym sposobem na osiągnięcie tego celu.

Pytanie 12

Które z instrukcji algorytmu odpowiada graficznemu przedstawieniu bloku pokazanego na ilustracji?

Ilustracja do pytania
A. n > 70
B. Wyświetl w konsoli wartość zmiennej n
C. n ← n – 3
D. Zrealizuj podprogram do sortowania tablicy t
Wybór opcji wykonaj podprogram sortowania tablicy t jest dość złożony i zazwyczaj przedstawia się go w formie bloku procesu, ale nie powinno to być prostokątne. Takie operacje to nie tylko jedna czynność, trzeba wybrać odpowiedni algorytm, jak np. szybkie sortowanie, bąbelkowe czy przez wstawianie. Operacja n > 70 z kolei to logiczny warunek, który zwykle pokazuje się w notacji algorytmicznej jako romb, a nie prostokąt. Warunki są istotne w programach, pozwalają na podejmowanie decyzji. Jeśli warunki są źle napisane, to psuje to całą logikę kodu, co jest ważne, bo w testowaniu i debugowaniu ma to ogromne znaczenie. Wypisywanie wartości zmiennej n na konsolę to kolejna operacja związana z wejściem i wyjściem, która w diagramach reprezentowalibyśmy równoległobokiem, a nie prostokątem. Te działania pozwalają nam na interakcję z użytkownikami i pokazywanie wyników. Wszystkie te odpowiedzi źle przypisują elementy do prostokątnego bloku, co pokazuje, jak ważne jest zrozumienie notacji algorytmicznej w codziennej pracy programisty. Jeśli nie zrozumiemy tych różnic, to może się to odbić na wydajności i trudności w utrzymaniu kodu.

Pytanie 13

Jaką cechę pola w tabeli należy ustalić, aby pole mogło przyjmować wyłącznie dane składające się z cyfr?

Ogólne
Rozmiar pola255
Format
Maska wprowadzania
Tytuł
Wartość domyślna
Reguła spr. poprawności
Tekst reguły spr. poprawności
WymaganeNie
Zerowa dł. dozwolonaTak
IndeksowaneNie
Kompresja UnicodeTak
Tryb IMEBez formantu
Tryb zdania edytora IMEBrak
Tagi inteligentne
A. Regułę sprawdzania poprawności
B. Maskę wprowadzania
C. Tagi inteligentne
D. Wartość domyślną
Tagi inteligentne to narzędzie, które można znaleźć w dokumentach czy w systemach do zarządzania danymi. Służą do automatycznego rozpoznawania danych, na przykład dat czy adresów, ale nie mają możliwości ograniczania wprowadzanych danych pod kątem ich formatu, jak na przykład cyfry. Reguły sprawdzania poprawności dane na poziomie tabeli, co oznacza, że można sprawdzać, czy spełniają pewne kryteria przy zapisywaniu. To działa, ale jest bardziej ogólne i nie zastąpi maski wprowadzania, bo te działają w czasie rzeczywistym. Z kolei wartość domyślna to coś, co automatycznie wprowadza dane w polu, jeśli użytkownik nic nie poda. To może być przydatne, gdy jakieś pole zawsze powinno mieć określoną wartość, chyba że użytkownik zadecyduje inaczej. Tylko że wartość domyślna nie reguluje, jakie dane mogą być wpisywane, co jest właśnie wymagane w pytaniu o ograniczenie danych do cyfr. Często myślimy, że wartość domyślna lub reguły mogą kontrolować format danych na bieżąco, ale to jest rola maski wprowadzania, która działa w momencie, gdy piszemy, więc chroni integralność już na etapie wprowadzania danych.

Pytanie 14

Jaką wartość zwróci ten algorytm?

Z = 0
N = 1
dopóki Z < 3:
    N = N * 2 + 1
    Z = Z + 1
wypisz N
A. 5
B. 15
C. 3
D. 7
Zrozumienie działania tego algorytmu jest kluczowe dla programowania i matematyki obliczeniowej. Algorytm ten wykorzystuje pętlę 'dopóki', która wykonuje operacje na dwóch zmiennych: Z i N. Na początku Z jest równe 0, a N jest równe 1. Pętla trwa dopóki Z jest mniejsze od 3. W każdej iteracji pętli zmienna N jest aktualizowana zgodnie z wyrażeniem N = N * 2 + 1 oraz Z jest zwiększane o 1. Przy pierwszej iteracji Z wynosi 0, więc N staje się 1 * 2 + 1 = 3, a Z zostaje zwiększone do 1. W drugiej iteracji Z wynosi 1, więc N staje się 3 * 2 + 1 = 7, a Z wynosi 2. W trzeciej iteracji Z wynosi 2, dlatego N staje się 7 * 2 + 1 = 15, a Z zostaje zwiększone do 3, co kończy pętlę. W rezultacie, gdy algorytm kończy działanie, zmienna N ma wartość 15, która zostaje wypisana. To podejście jest zgodne z dobrymi praktykami w pisaniu algorytmów, gdzie dbałość o zrozumienie pętli i operacji na zmiennych jest fundamentalna dla tworzenia wydajnych programów.

Pytanie 15

Jakie jest określenie na element bazy danych, który umożliwia jedynie przeglądanie danych, przedstawiając je w formie tekstowej lub graficznej?

A. Raport
B. Zapytanie
C. Formularz
D. Tabela
Tabela to struktura bazy danych, która służy do przechowywania danych w formie zorganizowanej w wiersze i kolumny. Tabele są fundamentem relacyjnych baz danych, jednak nie umożliwiają one bezpośredniego generowania raportów ani wizualizacji danych. Tabele są wykorzystywane w procesie wprowadzania i edycji danych, a nie w ich przetwarzaniu do analizy. Zapytanie to forma polecenia, która umożliwia użytkownikowi pobieranie określonych danych z bazy, na podstawie zdefiniowanych kryteriów. Mimo że zapytania są kluczowe w procesie obróbki danych, same w sobie nie generują raportów ani wykresów, lecz zwracają wyniki w postaci zbioru danych. Formularz to narzędzie, które służy do wprowadzania i edytowania danych w bazie. Rola formularzy polega na ułatwieniu interakcji użytkownika z bazą danych poprzez umożliwienie wprowadzania informacji w zorganizowanej formie. Formularze są przydatne w procesach zarządzania danymi, ale ich funkcjonalność nie obejmuje analizy ani prezentacji danych w formie raportów. W związku z tym, zarówno tabela, jak i zapytanie oraz formularz nie spełniają kryteriów określonych w pytaniu, ponieważ nie są dedykowane wyłącznie do odczytu danych w formie raportów.

Pytanie 16

W języku HTML 5 do grupowania powiązanych ze sobą elementów formularza używa się znacznika

A. <option>
B. <summary>
C. <fieldset>
D. <optgroup>
W tym pytaniu chodzi o semantykę HTML5 związaną z formularzami, więc warto spokojnie rozłożyć na czynniki wszystkie podane znaczniki. Częsty błąd polega na tym, że widząc kilka tagów kojarzonych luźno z formularzami, wybieramy któryś „na czuja”, zamiast zastanowić się, do czego dokładnie został zaprojektowany w specyfikacji HTML. Znacznik <summary> w ogóle nie służy do obsługi formularzy. Jest on elementem używanym wewnątrz <details> i odpowiada za nagłówek rozwijanego bloku. To bardziej narzędzie do tworzenia prostych elementów typu „pokaż/ukryj treść”, a nie do grupowania pól formularza. W formularzu można go użyć tylko jako zwykły element HTML, ale nie nadaje on żadnej specjalnej semantyki powiązanej z inputami czy etykietami. Znacznik <option> jest ściśle związany z kontrolką <select>. Reprezentuje pojedynczą opcję do wyboru w liście rozwijanej. On nie grupuje niczego, raczej sam jest elementem składowym większej struktury. Mylenie <option> z elementami grupującymi wynika często z tego, że w formularzach pojawia się dużo nawiasów ostrych i człowiek podświadomie kojarzy wszystkie z „formularzem”, ale rola <option> jest bardzo wąska: pojedyncza wartość w <select>. Z kolei <optgroup> faktycznie coś grupuje, ale tylko wewnątrz listy <select>. Umożliwia pogrupowanie opcji w logiczne sekcje, np. „Polska”, „Niemcy”, „Czechy” jako grupy krajów w jednym polu wyboru. To jednak nie jest ogólny mechanizm do grupowania różnych elementów formularza, tylko specjalistyczny element przeznaczony wyłącznie do porządkowania <option>. Dlatego nie zastąpi <fieldset>, który może otaczać wiele różnych kontrolek: inputy, selecty, textarea, przyciski itd. Podstawą dobrej odpowiedzi jest zrozumienie, że tylko <fieldset> ma w specyfikacji HTML5 jasno zdefiniowaną rolę „grouping form controls”. Pozostałe znaczniki pełnią inne, wyspecjalizowane funkcje i nie nadają całej grupie pól formularza właściwej semantyki ani nie współpracują tak dobrze z technologiami asystującymi. W praktyce, jeśli chcesz logicznie podzielić formularz na sekcje, zawsze myśl w pierwszej kolejności o <fieldset> + <legend>, a dopiero potem o innych elementach, które pełnią bardziej szczegółowe role.

Pytanie 17

W bazie danych MYSQL znajduje się tabela z programami komputerowymi, która ma pola: nazwa, producent, rokWydania. Jak należy sformułować kwerendę SELECT, aby uzyskać wszystkie nazwy producentów bez powtórzeń?

A. SELECT DISTINCT producent FROM programy;
B. SELECT UNIQUE producent FROM programy;
C. SELECT producent FROM programy WHERE UNIQUE;
D. SELECT producent FROM programy WHERE producent NOT DUPLICATE;
Odpowiedź 'SELECT DISTINCT producent FROM programy;' jest w porządku. To dlatego, że kluczowe słowo DISTINCT działa tak, że zwraca tylko unikalne wartości z kolumny 'producent' w tabeli 'programy'. Jak są duże zbiory danych, to użycie DISTINCT naprawdę się przydaje, bo pozwala pozbyć się duplikatów i to później ułatwia analizę danych. Na przykład, kiedy w tabeli jest mnóstwo rekordów dla tego samego producenta, to DISTINCT zwróci tylko jeden wpis dla każdego z nich. Wiesz, to taka dobra praktyka w SQL, bo im mniej danych musisz przetwarzać, tym lepsza wydajność. I, co ciekawe, użycie DISTINCT nie obniża wydajności zapytania tak bardzo, jak niektórzy mogą myśleć, szczególnie w dobrze zindeksowanych tabelach. Warto to mieć na uwadze.

Pytanie 18

Funkcja phpinfo() umożliwia

A. analizowanie kodu PHP w celu wykrycia błędów
B. uzyskanie danych o środowisku serwera, na którym działa PHP
C. sprawdzenie wartości zmiennych zastosowanych w kodzie PHP
D. rozpoczęcie wykonywania kodu w języku PHP
Funkcja phpinfo() jest niezwykle użytecznym narzędziem w PHP, które pozwala deweloperom na uzyskanie szczegółowych informacji o środowisku pracy serwera. Dzięki temu, można dowiedzieć się o zainstalowanych rozszerzeniach PHP, wersji PHP, ustawieniach konfiguracyjnych, a także o systemie operacyjnym, na którym działa serwer. Przykładowo, wywołanie phpinfo(); w skrypcie PHP zwraca stronę zawierającą różnorodne informacje, takie jak wartości zmiennych konfiguracyjnych (np. memory_limit, upload_max_filesize), co jest nieocenione podczas optymalizacji aplikacji oraz rozwiązywania problemów. Ponadto, korzystanie z phpinfo() jest zgodne z dobrymi praktykami w programowaniu, ponieważ pomaga zrozumieć, w jakim środowisku działa aplikacja, co jest kluczowe przy jej rozwijaniu i testowaniu. Deweloperzy często używają tej funkcji w fazie debugowania, aby upewnić się, że wszystkie wymagane rozszerzenia są aktywne i poprawnie skonfigurowane, co może zapobiec wielu problemom podczas wdrożenia aplikacji na produkcję.

Pytanie 19

W załączonym kodzie CSS, kolor został zapisany w formacie

color: #008000;
A. dziesiętnej
B. CMYK
C. HSL
D. szesnastkowej
W CSS kolory często zapisywane są w postaci szesnastkowej ponieważ jest to krótki i precyzyjny sposób definiowania koloru. Kod szesnastkowy składa się zazwyczaj z sześciu znaków poprzedzonych znakiem hash (#) gdzie pierwsze dwa znaki odpowiadają czerwonej składowej następne dwa zielonej a ostatnie dwa niebieskiej. Na przykład #008000 oznacza kolor zielony gdzie czerwona składowa wynosi 0 zielona 128 a niebieska 0. Wartości te są zapisane w systemie szesnastkowym co oznacza że mogą przyjmować wartości od 00 do FF odpowiadające wartościom dziesiętnym od 0 do 255. Korzystanie z formatu szesnastkowego jest powszechnie uznawane za dobrą praktykę w web designie ponieważ jest szeroko wspierane przez przeglądarki internetowe i umożliwia łatwe definiowanie szerokiej gamy kolorów. Dzięki swojej zwięzłości i jednoznaczności jest preferowane w projektach gdzie każda linijka kodu ma znaczenie. Przy wyborze koloru warto korzystać z narzędzi które mogą pomóc w konwersji wartości RGB na szesnastkowe co ułatwia dokładne odwzorowanie wybranych kolorów

Pytanie 20

W CSS zastosowano poniższe formatowanie. Kolorem czerwonym będzie wyświetlony

h1 i {
   color: red;
}
A. tylko tekst italic nagłówka pierwszego stopnia
B. cały tekst nagłówka pierwszego stopnia oraz tekst italic akapitu
C. cały tekst nagłówka pierwszego stopnia oraz wszelki tekst italic, niezależnie od lokalizacji na stronie
D. jedynie tekst italic we wszystkich poziomach nagłówków
W stylach CSS selektor złożony h1 i oznacza, że formatowanie będzie stosowane tylko do elementów pochylonych i znajdujących się wewnątrz nagłówka pierwszego poziomu h1. W praktyce oznacza to, że taki zapis CSS zmienia kolor na czerwony tylko dla tekstu wewnątrz tagu <i> znajdującego się w <h1>. Selekcja złożona umożliwia precyzyjne określanie, które elementy są formatowane, co jest kluczowe w przypadku dużych i złożonych stron internetowych. Zrozumienie działania selektorów jest fundamentem efektywnego stylizowania dokumentów HTML. Pozwala to na zachowanie spójności wizualnej oraz lepszą kontrolę nad wyglądem strony. Dobór odpowiednich selektorów w CSS to również jedna z dobrych praktyk, które sprzyjają czytelności kodu oraz jego łatwiejszej konserwacji w przyszłości. Taki zapis pozwala na minimalizację konfliktów stylów, które mogą się pojawić przy bardziej ogólnych selektorach. Praktyczne użycie selektorów złożonych jest więc zalecane w celu uzyskania bardziej kontrolowanego i przewidywalnego wyglądu strony internetowej, co jest zgodne ze standardami webowymi promującymi semantyczne i uporządkowane kodowanie.

Pytanie 21

W stylach CSS, aby ustalić styl linii obramowania jako linię kreskową, należy zastosować wartość

A. groove
B. solid
C. dashed
D. dotted
W stylach CSS, właściwość 'border-style' pozwala na określenie stylu obramowania elementu. Aby ustawić obramowanie jako linię kreskową, stosuje się wartość 'dashed'. Linia kreskowa jest jedną z opcji, które pozwalają na wizualne odróżnienie elementów na stronie internetowej. Wartość 'dashed' generuje obramowanie składające się z przerywanych linii, co czyni go idealnym do wyróżniania elementów, które wymagają uwagi lub są w pewien sposób odrębne. Przykład zastosowania: 'border: 2px dashed black;' tworzy obramowanie o grubości 2 pikseli, w kolorze czarnym, składające się z przerywanej linii. Wartości 'solid', 'dotted', oraz 'groove' oferują inne style obramowania, ale nie generują efektu linii kreskowej. 'Solid' tworzy jednolitą linię, 'dotted' składa się z kropek, a 'groove' daje efekt trójwymiarowego wgłębienia. Standardy CSS, w tym CSS3, precyzują te style, umożliwiając projektantom elastyczność w dostosowywaniu wyglądu stron internetowych, co jest kluczowe dla UX i UI designu.

Pytanie 22

Jak przeglądarka zaprezentuje kod HTML formularza?

<form>
stanowisko: <input type="text"><br>
obowiązki:<br>
<input type="checkbox" name="obowiazek1" value="1" disabled checked>
sporządzanie dokumentacji<br>
<input type="checkbox" name="obowiazek2" value="2" checked>
pisanie kodu<br>
<input type="checkbox" name="obowiazek3" value="3">
testy oprogramowania<br>
</form>
Ilustracja do pytania
A. A
B. B
C. C
D. D
Prawidłowa odpowiedź to D ponieważ kod HTML formularza definiuje trzy pola wyboru typu checkbox z różnymi atrybutami wpływającymi na ich stan początkowy. Pierwsze pole wyboru dotyczące sporządzania dokumentacji posiada atrybuty disabled i checked co oznacza że będzie zaznaczone ale nieaktywne dla użytkownika. Oznacza to że użytkownik nie może zmienić jego stanu w przeglądarce. Drugie pole dotyczące pisania kodu ma tylko atrybut checked co oznacza że będzie zaznaczone i dostępne do edycji. Trzecie pole dotyczące testów oprogramowania nie posiada żadnego z tych atrybutów więc będzie domyślnie niezaznaczone i edytowalne. To zachowanie jest zgodne ze standardami HTML i dobrymi praktykami kodowania gdzie atrybuty kontrolują interakcje użytkownika z formularzami. Wiedza ta jest kluczowa dla projektantów stron internetowych aby zapewnić prawidłowe działanie formularzy i poprawne doświadczenie użytkownika. Formularze są podstawowym elementem interakcji z użytkownikiem dlatego zrozumienie ich działania jest niezbędne w tworzeniu funkcjonalnych i intuicyjnych interfejsów użytkownika.

Pytanie 23

Jakie działanie wykonuje polecenie DBCC CHECKDB("sklepAGD", Repair_fast) w MS SQL Server?

A. zweryfikuje spójność danej tabeli oraz naprawi uszkodzone rekordy
B. sprawdzi spójność bazy danych i utworzy kopię zapasową
C. zweryfikuje spójność danej tabeli
D. sprawdzi spójność bazy danych i naprawi uszkodzone indeksy
Polecenie DBCC CHECKDB w MS SQL Server to narzędzie używane do weryfikacji integralności bazy danych. W przypadku użycia opcji Repair_fast, polecenie to sprawdza spójność bazy danych oraz naprawia uszkodzone indeksy. Jest to istotne w kontekście zapewnienia, że wszystkie dane w bazie są prawidłowo zorganizowane i dostępne. Uszkodzone indeksy mogą prowadzić do problemów z wydajnością zapytań oraz błędów w dostępie do danych. Przykładowo, gdy baza danych ulega uszkodzeniu z powodu awarii sprzętu lub błędów oprogramowania, DBCC CHECKDB umożliwia przywrócenie funkcjonalności. Dobrą praktyką jest regularne wykonywanie tego polecenia jako część strategii utrzymania bazy danych, co pozwoli na wcześniejsze wykrycie potencjalnych problemów, zanim staną się one krytyczne. Warto również zaznaczyć, że DBCC CHECKDB powinno być uruchamiane w odpowiednich oknach serwisowych, by zminimalizować wpływ na wydajność aplikacji korzystających z bazy danych.

Pytanie 24

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. p > i
B. b > i
C. p + i
D. b i
Poprawny selektor to „p > i”, ponieważ w podanym fragmencie HTML element <i> jest bezpośrednim dzieckiem elementu <p>. Znak „>” oznacza tzw. selektor dziecka (child combinator) w CSS – styl zostanie zastosowany tylko do tych elementów <i>, które znajdują się dokładnie jeden poziom niżej w drzewie DOM, wewnątrz znacznika <p>. Dzięki temu reguła nie obejmie np. <i> zagnieżdżonych głębiej ani <i> występujących poza paragrafem. Moim zdaniem to jeden z ważniejszych niuansów CSS: rozróżnienie selektora potomków (spacja, np. „p i”) od selektora bezpośrednich dzieci („p > i”). Gdyby w stylu użyć „p i”, to reguła zadziałałaby na każde <i> znajdujące się gdziekolwiek w środku <p>, nawet gdyby było schowane np. w <span> lub <b>. Przy prostym przykładzie nie widać różnicy, ale w większych projektach ma to ogromne znaczenie dla precyzji i przewidywalności styli. W praktyce taki selektor „p > i” możesz stosować np. gdy chcesz nadać specyficzny wygląd tylko oznaczonym kursywą fragmentom bezpośrednio w paragrafie, ale nie ruszać <i> użytych w zagnieżdżonych komponentach, widgetach albo ikonach. To jest zgodne z dobrymi praktykami: pisać selektory możliwie precyzyjne, unikając nadmiernie ogólnych reguł, które potem ciężko nadpisać. W dokumentacji CSS (specyfikacja W3C) wszystkie te kombinatory są dokładnie opisane i warto się do nich przyzwyczaić, bo później mocno ułatwiają utrzymanie arkuszy stylów w większych projektach. Dodatkowo warto pamiętać, że tego typu selektory dobrze współpracują z metodologiami jak BEM czy ITCSS, gdzie świadome ograniczanie zasięgu reguł jest kluczowe. Zamiast dokładać zbędne klasy, czasem wystarczy właśnie poprawnie użyty kombinator „>”.

Pytanie 25

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 z powtórzeniami oraz średnią pensję dla każdego z nich.
C. nazwy miast bez powtórzeń oraz sumę pensji 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 26

W języku HTML, aby stworzyć pole do wprowadzania hasła, w którym wpisywany tekst będzie ukrywany (zastępowany kropkami), należy zastosować znacznik

A. <input type="password" />
B. <input name="password" />
C. <form input type="password" />
D. <form="password" type="password" />
Odpowiedź <input type="password" /> jest poprawna, ponieważ ten znacznik HTML służy do tworzenia pola edycyjnego, w którym wprowadzane dane są maskowane. W przypadku pól do wpisywania haseł, istotne jest, aby użytkownik nie mógł zobaczyć wpisywanego tekstu, co zwiększa poziom bezpieczeństwa. W HTML, atrybut 'type' z wartością 'password' instruuje przeglądarkę, aby ukrywała znaki wprowadzane przez użytkownika, zastępując je zazwyczaj kropkami lub gwiazdkami. Przykładem zastosowania tego typu znacznika może być formularz logowania, gdzie użytkownicy wpisują swoje hasła. Dobrą praktyką jest również zastosowanie odpowiednich etykiet i walidacji, aby zapewnić, że formularz jest użyteczny i zgodny z WCAG (Web Content Accessibility Guidelines). Warto pamiętać, że bezpieczeństwo haseł powinno być również wspierane przez odpowiednie zabezpieczenia po stronie serwera, w tym haszowanie haseł oraz ochrona przed atakami typu brute force.

Pytanie 27

Testy związane ze skalowalnością aplikacji mają na celu zweryfikowanie, czy program

A. jest chroniony przed nieautoryzowanymi działaniami, np. dzieleniem przez zero
B. posiada odpowiednie funkcje
C. jest właściwie opisany w dokumentacji
D. jest w stanie funkcjonować przy zaplanowanym i większym obciążeniu
Wybór odpowiedzi dotyczącej funkcjonalności aplikacji lub zabezpieczeń przed niepożądanymi operacjami, jak dzielenie przez zero, jest nieprawidłowy w kontekście testów skalowalności. Funkcjonalność, choć istotna, nie odnosi się bezpośrednio do tego, jak aplikacja radzi sobie z wzrastającym obciążeniem. Oprogramowanie może być w pełni funkcjonalne, ale jeśli nie jest w stanie sprostać zwiększonej liczbie użytkowników, nie może być uznane za skalowalne. Zabezpieczenia przed błędami, takimi jak dzielenie przez zero, dotyczą stabilności aplikacji, ale nie definiują jej zdolności do działania pod dużym obciążeniem. W kontekście obliczeń i operacji, programiści powinni zajmować się obsługą wyjątków, co jest oddzielnym zagadnieniem od skalowalności. Odpowiednia dokumentacja ma znaczenie w kontekście utrzymania i rozwoju oprogramowania, ale także nie odnosi się do problematyki wydajności i obciążenia. W rzeczywistości, wiele aplikacji pomimo dobrych praktyk w zakresie zabezpieczeń i dokumentacji, może przestać działać w przypadku nadmiernego obciążenia, co wskazuje na brak właściwej architektury skalowalnej. Zrozumienie różnicy między tymi aspektami jest kluczowe dla inżynierów oprogramowania i projektantów systemów.

Pytanie 28

W języku JavaScript rezultat wykonania polecenia ```zmienna1 -= 1;``` będzie tożsamy z wynikiem polecenia

A. zmienna1 = zmienna1 - 0;
B. zmienna1 === zmienna1 - 1;
C. zmienna1++;
D. zmienna1--;
Odpowiedź zmienna1--; jest poprawna, ponieważ jest to skrócona forma wyrażenia zmienna1 -= 1;. Oba wyrażenia mają ten sam efekt, który polega na zmniejszeniu wartości zmiennej zmienna1 o 1. W języku JavaScript operator '--' jest operatorem dekrementacji, który zmienia wartość zmiennej o jeden w dół. Użycie tego operatora jest zgodne z dobrymi praktykami kodowania, gdyż zwiększa czytelność kodu, czyniąc intencje programisty bardziej jasnymi. Użycie dekrementacji jest powszechne w sytuacjach, gdzie iterujemy przez kolekcje z użyciem pętli, co ogranicza potrzebę stosowania bardziej skomplikowanych instrukcji. Na przykład, w przypadku pętli for, zamiast pisać for(let i = n; i > 0; i -= 1), można zastosować for(let i = n; i > 0; i--), co jest bardziej zwięzłe i zrozumiałe. W kontekście standardów kodowania, preferowanym podejściem jest używanie operatorów, które maksymalizują przejrzystość i minimalizują możliwość popełnienia błędów.

Pytanie 29

Do podzbioru DML (ang. Data Manipulation Language) języka SQL należą polecenia:

A. BEGIN, COMMIT, ROLLBACK
B. INSERT, UPDATE, DELETE
C. CREATE, DROP, ALTER
D. GRANT, REVOKE, DENY
W SQL bardzo łatwo pomylić różne grupy poleceń, bo wszystkie wyglądają podobnie, a jednak należą do innych podzbiorów języka. Podzbiór DML (Data Manipulation Language) dotyczy wyłącznie operacji na danych w tabelach: wstawiania, modyfikowania, usuwania i odczytu rekordów. Dlatego do DML zaliczamy przede wszystkim INSERT, UPDATE, DELETE oraz w wielu opracowaniach także SELECT. Wszystko to, co zmienia zawartość tabel, a nie ich definicję czy uprawnienia. Częsty błąd polega na wrzucaniu do jednego worka wszystkich poleceń SQL, bo „to też jest praca na bazie danych”. Na przykład CREATE, DROP i ALTER należą do DDL (Data Definition Language). One definiują strukturę bazy: tworzą tabele, usuwają je, zmieniają kolumny. To są operacje na schemacie bazy, a nie na rekordach. W praktyce używasz ich przy projektowaniu lub migracjach, a nie przy codziennej pracy aplikacji na danych użytkowników. Z kolei GRANT, REVOKE i DENY to klasyka DCL (Data Control Language). Te polecenia sterują uprawnieniami: kto może wykonywać SELECT, INSERT czy DELETE na danej tabeli, kto może tworzyć obiekty, itd. To już bardziej klimat administracji i bezpieczeństwa niż typowej manipulacji rekordami. BEGIN, COMMIT i ROLLBACK też bywają mylące. Dotyczą transakcji i zalicza się je zwykle do TCL (Transaction Control Language). One nie dodają ani nie zmieniają pojedynczego rekordu, tylko kontrolują „pakiet” operacji DML: pozwalają zatwierdzić lub wycofać całą serię INSERT/UPDATE/DELETE. Typowy błąd myślowy jest taki: skoro coś ma związek z danymi lub ich bezpieczeństwem, to pewnie DML. A jednak standardy i dobra praktyka wyraźnie rozdzielają DDL, DML, DCL i TCL, bo to pomaga lepiej rozumieć odpowiedzialność poszczególnych instrukcji i projektować bezpieczniejsze aplikacje. W codziennej pracy programisty webowego DML to głównie to, co stoi „pod spodem” formularzy: zapisywanie, edycja i kasowanie rekordów, a nie zarządzanie strukturą czy uprawnieniami.

Pytanie 30

Wskaż fragment CSS, który odpowiada rozkładowi bloków 2-5, zakładając, że zostały one zbudowane na podstawie podanego kodu HTML.

Ilustracja do pytania
A. Kod 1
B. Kod 4
C. Kod 3
D. Kod 2
Niepoprawne podejścia w pozostałych kodach wynikają z niewłaściwego użycia właściwości float oraz clear. W Kodzie 1 użycie float: right; dla czwartego bloku jest poprawne, jednak clear: both; dla piątego bloku powoduje, że nie będzie on kontynuował linii z poprzednimi blokami, co nie pasuje do przedstawionego układu. Clear: both; wymusza przeniesienie bloku poniżej aktualnej linii. Kod 3 charakteryzuje się brakiem właściwości clear, co prowadzi do problemów z układem, gdyż blok 5 ułożony float: right; nie rozpocznie nowego wiersza, co jest potrzebne w tym zadaniu. W Kodzie 4 brak jest jakiegokolwiek użycia właściwości float lub clear dla bloków 3, 4 i 5 co uniemożliwia osiągnięcie założonego układu. Brak float dla trzeciego i czwartego bloku spowoduje, że będą one umieszczone pod sobą jako blokowe elementy domyślnie, co nie pasuje do układu. Prawidłowa organizacja układu bloków za pomocą właściwości float opiera się na odpowiednim przypisaniu float: left; lub right; oraz strategicznym użyciu clear, aby kontrolować przepływ elementów w wierszach. Typowym błędem jest niezrozumienie, że clear resetuje przepływ dla kolejnego bloku, co jest kluczowe w manipulacji wyglądem layoutu blokowego w starszych technikach CSS. Takie błędy mogą prowadzić do nieprzewidywalnych rezultatów, zwłaszcza gdy układ jest testowany na różnych przeglądarkach i rozdzielczościach ekranów, co podkreśla znaczenie testowania i walidacji CSS w kontekście projektów webowych. Stosowanie zasad float i clear wymaga precyzyjnego planowania, by unikać konfliktów w przepływie i zachować spójność wizualną projektu webowego.

Pytanie 31

Dla dowolnego a w zakresie (0,99), celem funkcji napisanej w JavaScript jest:

function fun1(a)
{
    for(n=a; n<=100; n++)
        document.write(n);
    return n;
}
A. zwrócenie wartości z zakresu a..99
B. wypisanie wartości z zakresu a..99 i zwrócenie liczby 100
C. wypisanie wartości zmiennej a oraz zwrócenie wartości zmiennej n
D. wypisanie wartości z zakresu a...100 i zwrócenie wartości zmiennej n
Analizując pozostałe odpowiedzi możemy zauważyć kilka nieporozumień. Jeśli spojrzymy na odpowiedź sugerującą że funkcja zwraca liczby z przedziału a..99 warto zrozumieć że takie stwierdzenie jest niepoprawne. Pętla w kodzie jasno wskazuje że iteracja trwa aż do 100 włącznie stąd wszystkie wartości od a do 100 zostaną wypisane na ekran. To jest typowy błąd gdzie zakłada się błędny zakres iteracji. W przypadku odpowiedzi dotyczącej wypisywania liczb z przedziału a..99 i zwrócenia wartości 100 należy zauważyć że funkcja zwraca wartość zmiennej sterującej n po zakończeniu pętli. Ponieważ pętla kończy się przy n równym 100, wartość zwrócona będzie równa 101. Takie nieporozumienie może wynikać z nieprawidłowego zrozumienia mechanizmu działania pętli for. Odpowiedź dotycząca wypisania wartości zmiennej a oraz zwrócenia wartości zmiennej n również jest błędna. Dokument.write w pętli wywoływany jest dla zmiennej n, nie a. Ponadto zmienna n po zakończeniu pętli ma wartość 101, a nie a. Te nieścisłości często wynikają z mylnego rozróżnienia pomiędzy zmienną początkową iteracji a zmienną sterującą. W celu uniknięcia takich błędów kluczowe jest dokładne śledzenie przepływu kontroli w programie, co pozwala na zrozumienie jak wartości zmiennych są zmieniane w trakcie wykonywania kodu. Ważne jest również testowanie kodu w różnych scenariuszach aby upewnić się że zrozumienie jego działania jest prawidłowe. Proste ćwiczenia z debugowaniem kodu mogą pomóc w wypracowaniu takich umiejętności. Każde z powyższych podejść ilustruje typowe błędy jakie mogą się pojawić podczas pracy z pętlami i iteracjami w programowaniu i jak ważne jest uważne analizowanie kodu i jego logiki. To również pokazuje jak istotne jest stosowanie dobrych praktyk takich jak jasne nazewnictwo zmiennych i czytelna struktura kodu aby ułatwić jego zrozumienie i dalszy rozwój.

Pytanie 32

W firmie zajmującej się technologiami informacyjnymi otwarta jest rekrutacja na stanowisko administratora e-sklepu. Do jego zadań należy instalacja i konfiguracja systemu zarządzania treścią, który jest przeznaczony jedynie dla sklepu internetowego, zmiana szablonów wizualnych oraz dostosowanie grafiki. Jakie umiejętności powinien posiadać nowy pracownik?

A. CMS PrestaShop, CSS, Gimp
B. Photoshop, Gimp, JavaScript
C. CMS WordPress, HTML, Gimp
D. HTML, CSS, Photoshop
Wybór odpowiedzi CMS PrestaShop, CSS, Gimp jest prawidłowy, ponieważ dokładnie odpowiada wymaganiom związanym z rolą administratora sklepu internetowego. PrestaShop to jeden z najpopularniejszych systemów zarządzania treścią (CMS) dedykowanych dla e-commerce. Jego znajomość jest kluczowa, gdyż pozwala na efektywną instalację i konfigurację platformy sklepowej, co jest jednym z głównych obowiązków administratora. CSS jest niezbędnym narzędziem do zmiany szablonów i dostosowania wyglądu sklepu zgodnie z wymaganiami klienta oraz standardami responsywnego designu, co zapewnia lepsze doświadczenia użytkowników na różnych urządzeniach. Gimp jako narzędzie graficzne umożliwia modyfikację grafik i tworzenie nowych elementów wizualnych, co jest istotne dla personalizacji sklepu. Dobrą praktyką w branży jest umiejętność integrowania graficznych oraz technologicznych komponentów w celu stworzenia atrakcyjnej i funkcjonalnej platformy handlowej, co znacząco wpływa na konwersje i wyniki sprzedaży. Ponadto, znajomość PrestaShop otwiera drzwi do wielu zasobów i społeczności, co dodatkowo wspiera rozwój zawodowy administratora.

Pytanie 33

Definicja stylu zaprezentowana w CSS odnosi się do odsyłacza, który

a:visited {color: orange;}
A. został wcześniej odwiedzony
B. wskaźnik myszy znajduje się nad nim
C. posiada błędny adres URL
D. jeszcze nie był odwiedzony
Odpowiedź "został wcześniej odwiedzony" jest prawidłowa, ponieważ definicja stylu CSS `a:visited {color: orange;}` dotyczy odsyłaczy, które zostały już odwiedzone przez użytkownika. W CSS pseudo-klasa `:visited` jest stosowana do stylizacji odsyłaczy, które prowadzą do stron, które użytkownik już otworzył. Dzięki tej możliwości, twórcy stron internetowych mogą wprowadzać różne kolory dla odwiedzonych i nieodwiedzonych linków, co pozwala na szybszą orientację użytkowników w treści strony. Na przykład, jeżeli na stronie znajduje się wiele linków, użytkownik może łatwiej zrozumieć, które z nich już kliknął, a które są nowe. Dobrą praktyką jest stosowanie kontrastowych kolorów dla odsyłaczy, aby zwiększyć ich dostępność i użyteczność. Warto również zauważyć, że przeglądarki mogą mieć różne ograniczenia dotyczące stylizacji odwiedzonych linków, co jest podyktowane względami prywatności użytkowników. Z tego powodu zaleca się, aby nie opierać funkcjonalności strony jedynie na wyglądzie odwiedzonych linków.

Pytanie 34

W przedstawionym filmie, aby połączyć tekst i wielokąt w jeden obiekt tak, aby operacja ta była odwracalna zastosowano funkcję

A. części wspólnej.
B. wykluczenia.
C. grupowania.
D. sumy.
Prawidłowo – w filmie została użyta funkcja grupowania. W grafice wektorowej, np. w programach typu Inkscape, CorelDRAW czy Illustrator, grupowanie służy właśnie do logicznego połączenia kilku obiektów w jeden „zestaw”, ale bez trwałego mieszania ich geometrii. To znaczy: tekst dalej pozostaje tekstem, wielokąt dalej jest wielokątem, tylko są traktowane jak jeden obiekt przy przesuwaniu, skalowaniu czy obracaniu. Dzięki temu operacja jest w pełni odwracalna – w każdej chwili możesz rozgrupować elementy i edytować każdy osobno. Moim zdaniem to jest podstawowa dobra praktyka w pracy z projektami, które mogą wymagać późniejszych poprawek: podpisy, etykiety, logotypy, schematy techniczne. Jeśli połączysz tekst z kształtem za pomocą operacji boolowskich (suma, część wspólna, wykluczenie), to tekst zwykle zamienia się na krzywe, przestaje być edytowalny jako tekst. To bywa potrzebne przy przygotowaniu do druku czy eksportu do formatu, który nie obsługuje fontów, ale nie wtedy, gdy zależy nam na łatwej edycji. Z mojego doświadczenia: przy projektowaniu interfejsów, ikon, prostych banerów na WWW czy grafik do multimediów, najrozsądniej jest najpierw grupować logicznie elementy (np. ikona + podpis), a dopiero na samym końcu, gdy projekt jest ostateczny, ewentualnie zamieniać tekst na krzywe. Grupowanie pozwala też szybko zaznaczać całe moduły projektu, wyrównywać je względem siebie, duplikować całe zestawy (np. kafelki menu, przyciski z opisami) bez ryzyka, że coś się rozjedzie. W grafice komputerowej to taka podstawowa „organizacja pracy” – mniej destrukcyjna niż różne operacje na kształtach i zdecydowanie bardziej elastyczna przy późniejszych zmianach.

Pytanie 35

Podczas definiowania pola id w tabeli MySQL użyto AUTO_INCREMENT. Co to oznacza?

id int NOT NULL AUTO_INCREMENT
A. wartość pola id zostanie nadana automatycznie przez bazę i będzie to losowo wygenerowana liczba całkowita
B. pole id może przyjmować takie wartości jak: NULL, 1, 2, 3, 4 i tak dalej
C. możliwe jest dodanie rekordu z dowolną wartością pola id
D. wartości dla tego pola będą generowane automatycznie przy dodawaniu nowego rekordu do bazy
Pole z definicją AUTO_INCREMENT w MySQL oznacza że podczas dodawania nowego rekordu do tabeli wartość tego pola jest automatycznie zwiększana najczęściej o jeden począwszy od wartości startowej. To zachowanie jest szczególnie przydatne w przypadku kluczy głównych gdzie unikalność jest wymagana. Jeśli mamy tabelę użytkowników i chcemy przypisać każdemu unikalny identyfikator możemy użyć AUTO_INCREMENT na kolumnie id. W ten sposób baza danych sama zadba o to by każda nowa wartość id była większa od poprzedniej co zapewnia automatyczne nadawanie kolejnych niepowtarzalnych wartości. Taka funkcjonalność jest zgodna z praktykami tworzenia baz danych i ułatwia zarządzanie danymi oraz ich integralność. Jest to również optymalizacja pod kątem wydajności ponieważ pozwala na szybkie dodawanie rekordów bez potrzeby ręcznego określania wartości klucza głównego. Dodatkowo zapewnia uporządkowane numerowanie rekordów co jest korzystne przy analizach i raportowaniu

Pytanie 36

Aby zweryfikować ustawienia w pliku php.ini, można wykonać skrypt PHP, który zawiera polecenie

A. <?php phpinfo(); ?>
B. <?php phpcredits(); ?>
C. <?php echo phpversion(); ?>
D. <?php ini_set(); ?>
Pomimo że inne funkcje podane w odpowiedziach mogą być użyteczne w różnych kontekstach, nie są one odpowiednie do wyświetlania pełnych ustawień konfiguracyjnych PHP. Funkcja ini_set(), na przykład, służy do dynamicznego zmieniania ustawień konfiguracyjnych w czasie działania skryptu, ale nie dostarcza informacji o aktualnych wartościach tych ustawień. Można ją użyć do modyfikacji konfiguracji, ale nie do ich przeglądania, co czyni ją nieodpowiednią do omawianego zadania. Ponadto, echo phpversion() zwraca jedynie wersję PHP, co jest zbyt ograniczone, aby zapewnić pełny przegląd środowiska konfiguracyjnego. Z kolei phpcredits() wyświetla informacje o wkładzie programistów PHP i nie ma związku z konfiguracją systemu, przez co również nie spełnia wymagań związanych z pytaniem. Często programiści mogą mylić te funkcje, zakładając, że są one w stanie dostarczyć kompleksowych informacji o ustawieniach PHP. Kluczowe jest zrozumienie różnic między tymi funkcjami i umiejętność zastosowania ich w odpowiednich kontekstach, co jest niezbędne do efektywnego zarządzania aplikacjami PHP.

Pytanie 37

Które z poniższych oprogramowań nie jest systemem do zarządzania treścią (CMS)?

A. Mambo
B. Apache
C. Joomla
D. WordPress
Odpowiedź "Apache" jest prawidłowa, ponieważ Apache to serwer HTTP, który jest odpowiedzialny za obsługę i dostarczanie stron internetowych do przeglądarek użytkowników. Nie jest to system zarządzania treścią (CMS), który służy do tworzenia, edytowania i publikowania treści na stronach internetowych. Systemy takie jak Mambo, Joomla i WordPress to platformy CMS, które umożliwiają użytkownikom zarządzanie treściami w sposób intuicyjny i przyjazny dla użytkownika. Na przykład, WordPress, będący jednym z najpopularniejszych CMS-ów, oferuje bogaty ekosystem wtyczek oraz motywów, co pozwala na łatwe dostosowanie witryn do indywidualnych potrzeb. W kontekście branżowych standardów, stosowanie CMS-ów pozwala na skuteczniejsze zarządzanie treściami w witrynach, co jest zgodne z najlepszymi praktykami w zakresie tworzenia i utrzymania stron internetowych.

Pytanie 38

Jaką wartość przyjmie zmienna a po wykonaniu poniższej sekwencji komend w PHP?

$a = 1;
$a++;
$a += 10;
--$a;
A. 11
B. 12
C. 1
D. 10
Zmienna a początkowo jest ustawiona na wartość 1. Instrukcja $a++ to postinkrementacja co oznacza że pierwotna wartość zmiennej a jest użyta w bieżącym wyrażeniu a dopiero potem zwiększana. Po wykonaniu tej instrukcji a staje się 2. Następnie $a += 10 zwiększa wartość o 10 co daje nam 12. Ostatecznie instrukcja --$a to predekrementacja co oznacza że zmniejsza wartość przed użyciem w wyrażeniu. W efekcie końcowym a wynosi 11. W praktyce zrozumienie różnic między inkrementacją a dekrementacją jest kluczowe dla efektywnego kodowania zwłaszcza przy operacjach na licznikach w pętlach. Dobre praktyki w programowaniu zalecają świadome stosowanie post- i preinkrementacji oraz zrozumienie jak te operacje wpływają na logikę programu. Umiejętność przewidywania efektów tych operacji jest jedną z podstawowych kompetencji programistycznych która znacząco wpływa na jakość i niezawodność tworzonego oprogramowania. Warto także zwrócić uwagę na zachowanie tych operatorów w różnych językach programowania ponieważ mimo pewnych podobieństw zachowanie może się różnić

Pytanie 39

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

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

Pytanie 40

Deklaracja CSS margin: auto; wskazuje, że marginesy są

A. obliczane przez przeglądarkę w taki sposób, aby element był wyśrodkowany poziomo
B. stałe dla danej przeglądarki, niezależnie od jej okna
C. zgodne z domyślnymi wartościami marginesów elementu, do którego zostały przypisane
D. przechodzące z elementu nadrzędnego dla danego elementu
Zastosowanie zapisu CSS 'margin: auto;' ma na celu automatyczne wycentrowanie elementu w poziomie w obrębie jego kontenera. Gdy zastosujemy tę właściwość, przeglądarka oblicza marginesy po lewej i prawej stronie elementu, aby zapewnić równą przestrzeń, co skutkuje wyśrodkowaniem elementu. Jest to szczególnie przydatne w przypadku kontenerów o ustalonej szerokości, takich jak divy czy bloki tekstowe. Na przykład, jeśli mamy element o szerokości 50% kontenera, to przy zastosowaniu 'margin: auto;' marginesy po obu stronach będą miały równą wartość, co skutkuje centrowanym wyglądem. Warto dodać, że 'margin: auto;' działa w kontekście blokowym, co oznacza, że najlepiej sprawdza się w przypadku elementów wyświetlanych jako bloki. Zgodnie z zaleceniami standardów CSS, jest to jedna z najprostszych i najskuteczniejszych metod na osiągnięcie efektu wyśrodkowania, który jest zalecany w wielu projektach webowych.