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: 15 maja 2026 08:58
  • Data zakończenia: 15 maja 2026 09:16

Egzamin zdany!

Wynik: 23/40 punktów (57,5%)

Wymagane minimum: 20 punktów (50%)

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

Jak określa się część strukturalnego języka zapytań, która dotyczy tworzenia zapytań do bazy danych za pomocą polecenia SELECT?

A. SQL DML (ang. Data Manipulation Language)
B. SQL DCL (ang. Data Control Language)
C. SQL DDL (ang. Data Definition Language)
D. SQL DQL (ang. Data Query Language)
Wybór SQL DML, SQL DCL lub SQL DDL jako odpowiedzi na to pytanie wskazuje na nieporozumienie dotyczące funkcji poszczególnych podzbiorów SQL. SQL DML (Data Manipulation Language) odnosi się do poleceń, które modyfikują dane w bazie, takich jak INSERT, UPDATE i DELETE. Myląc te pojęcia, można sądzić, że polecenia te są odpowiednie do pobierania danych, co jest błędne. Z kolei SQL DCL (Data Control Language) służy do zarządzania uprawnieniami użytkowników i kontroli dostępu do danych, co również nie ma związku z formułowaniem zapytań do bazy danych. Na przykład, polecenia GRANT i REVOKE są kluczowe w kontekście DCL, ale nie mają nic wspólnego z wyciąganiem danych. SQL DDL (Data Definition Language) dotyczy definicji struktury bazy danych, czyli tworzenia, modyfikowania i usuwania tabel oraz innych obiektów bazy danych (np. CREATE, ALTER, DROP). Wybór któregokolwiek z tych podzbiorów zamiast DQL wskazuje na brak zrozumienia hierarchii i celów SQL jako całości. Zrozumienie różnic między tymi podzbiorami jest kluczowe dla skutecznego zarządzania danymi i efektywnej pracy z bazami danych. Dobrą praktyką jest zapoznanie się z pełnym zakresem możliwości SQL, aby lepiej wykorzystać jego potencjał w codziennej pracy z danymi.

Pytanie 2

W JavaScript stworzono funkcję o nazwie licz_pitagoras, która oblicza długość przeciwprostokątnej w trójkącie prostokątnym, zgodnie z twierdzeniem Pitagorasa. Funkcja przyjmuje dwa parametry wejściowe i zwraca wynik. Poprawne wywołanie tej funkcji, wraz z uzyskaniem zwróconej wartości, będzie miało formę

A. licz_pitagoras(a, b);
B. licz_pitagoras(a, b) = c;
C. licz_pitagoras(a, b, c);
D. c = licz_pitagoras(a, b);
Wywołanie funkcji w JavaScript wymaga przestrzegania określonych zasad, które nie zostały spełnione w pozostałych odpowiedziach. Odpowiedź 'licz_pitagoras(a, b);' jest niekompletna, ponieważ pomija przypisanie wyniku do zmiennej. Funkcja może być wywołana, ale bez możliwości dalszego wykorzystania jej wyniku, co ogranicza jej użyteczność. Z kolei 'licz_pitagoras(a, b) = c;' sugeruje, że przypisanie wyniku może być wykonane w odwrotny sposób, co jest niezgodne z zasadami przypisywania wartości w JavaScript. Warto pamiętać, że w tym języku nie możemy przypisywać do wyniku funkcji, gdyż funkcje zwracają wartości, a nie są same w sobie zmiennymi. Natomiast 'licz_pitagoras(a, b, c);' sugeruje, że funkcja oczekuje trzech argumentów, co jest nieprawidłowe, ponieważ funkcja została zdefiniowana do przyjmowania tylko dwóch parametrów. Tego typu błędne założenia mogą prowadzić do frustracji podczas programowania, gdyż przydzielanie niewłaściwych argumentów do funkcji może skutkować błędami runtime. Dobrą praktyką jest zrozumienie definicji funkcji i jej parametrów przed jej wywołaniem, co pozwala na efektywne korzystanie z możliwości oferowanych przez JavaScript.

Pytanie 3

Według zasad walidacji HTML5, właściwym zapisem dla znacznika hr jest

A. <hr>
B. </ hr>
C. </hr?>
D. </ hr />
Znaczniki HTML mają ściśle określoną składnię, której nieprzestrzeganie prowadzi do błędów interpretacji przez przeglądarki oraz problemów z dostępnością. W przypadku odpowiedzi, które zawierają '/ hr', '/hr?>' oraz '/ hr />', pojawia się nieporozumienie dotyczące struktury znaczników samodzielnych. W HTML5 znaczniki takie jak <hr> są elementami samodzielnymi, co oznacza, że nie potrzebują ani otwierającego, ani zamykającego znacznika. Użycie '/ hr' sugeruje, że element wymaga zamknięcia, co jest błędne. Ponadto, '/hr?>' zawiera nieprawidłowy znak '>', który w kontekście HTML nie ma sensu, co skutkuje błędem w kodzie. ' />' w odpowiedzi '/ hr />' może powodować mylenie z XHTML, gdzie rzeczywiście wymagane jest zamknięcie dla elementów samodzielnych. XHTML i HTML5 to różne standardy, a HTML5 został zaprojektowany w taki sposób, aby uprościć pisanie kodu i zwiększyć jego czytelność. Typowe błędy myślowe obejmują mylenie zasad dotyczących XHTML z HTML5 oraz niewłaściwe rozumienie, że wszystkie elementy muszą być zamykane. Ważne jest, aby zrozumieć różnice między tymi dwiema technologiami oraz stosować aktualne standardy, aby zapewnić kompatybilność i poprawność kodu.

Pytanie 4

Aby uzyskać przedstawiony efekt napisu w programie INKSCAPE / COREL, należy

Ilustracja do pytania
A. skorzystać z opcji wstaw / dopasuj tekst do ścieżki
B. zastosować opcję wykluczenia z kołem
C. zastosować opcję sumy z kołem
D. skorzystać z opcji gradientu
Funkcja wstaw lub dopasuj tekst do ścieżki w programach takich jak Inkscape czy CorelDRAW pozwala na kreatywne umieszczanie tekstu wzdłuż określonej linii lub krzywej co jest przydatne w projektowaniu graficznym gdzie częstym wymaganiem jest dostosowanie tekstu do nietypowych kształtów. Na przykład tworzenie logo gdzie napis musi okrążać okrąg lub być umieszczony wzdłuż linii falistej. Proces ten zaczyna się od stworzenia ścieżki którą może być zarówno linia prosta jak i bardziej złożona krzywa a następnie wybrania opcji dopasowania tekstu do tej ścieżki. Kluczowe jest by zrozumieć że taka ścieżka działa jak prowadnica dla tekstu który dostosowuje się do jej kształtu co pozwala na uzyskanie efektów trudnych do osiągnięcia tradycyjnymi metodami. Funkcja ta jest zgodna z dobrymi praktykami projektowania graficznego umożliwiając twórcom większą elastyczność i kreatywność w prezentacji tekstu. Jest to również standardowe narzędzie w pakietach do grafiki wektorowej co pozwala na łatwą edycję i skalowanie projektów bez utraty jakości co jest kluczowe w profesjonalnym designie.

Pytanie 5

Podaj zapis w języku JavaScript, który sprawdzi, czy spełniony jest przynajmniej jeden z następujących warunków: 1) dowolna liczba naturalna a jest liczbą trzycyfrową, 2) dowolna liczba całkowita b jest liczbą ujemną?

A. ((a>99) && (a<1000)) || (b<0)
B. ((a>99) && (a<1000)) && (b<0)
C. ((a>99) || (a<1000)) && (b<0)
D. ((a>99) || (a<1000)) || (b<0)
Odpowiedź ((a>99) && (a<1000)) || (b<0) jest prawidłowa, ponieważ warunek ten skutecznie sprawdza, czy dowolna naturalna liczba a jest trzycyfrowa lub czy dowolna całkowita liczba b jest ujemna. Część wyrażenia (a>99) && (a<1000) weryfikuje, czy liczba a jest w przedziale od 100 do 999, co definiuje liczby trzycyfrowe. Z kolei druga część (b<0) sprawdza, czy liczba b jest mniejsza od zera. Całość połączona jest operatorem OR (||), co oznacza, że wystarczy spełnienie jednego z tych warunków, aby cały warunek był spełniony. W praktyce, takie wyrażenia są powszechnie stosowane w programowaniu, szczególnie w formularzach walidacyjnych, gdzie ważne jest, aby dane wprowadzone przez użytkowników spełniały określone kryteria. Dobrą praktyką jest dbałość o czytelność kodu i stosowanie odpowiednich nazw zmiennych, co ułatwia zrozumienie logiki działania aplikacji. Warto również pamiętać o testowaniu różnych przypadków, aby upewnić się, że warunki działają zgodnie z zamierzeniami, co jest kluczowe w zapewnieniu wysokiej jakości oprogramowania.

Pytanie 6

Który selektor stosuje formatowanie dla akapitów tekstu z klasą tekst oraz dla elementu blokowego o ID obrazki?

A. p.tekst, div#obrazki
B. p#tekst, div.obrazki
C. p.tekst + div#obrazki
D. p#tekst + div.obrazki
Odpowiedź 'p.tekst, div#obrazki' jest poprawna, ponieważ selektor 'p.tekst' odnosi się do elementów <p> z klasą 'tekst', a selektor 'div#obrazki' odnosi się do elementu <div> z identyfikatorem 'obrazki'. Oba selektory są zgodne z zasadami CSS, które pozwalają na stylizację elementów na podstawie ich klas i ID. Na przykład, jeśli chcemy zmienić kolor tekstu w akapitach oraz dodać ramkę do elementu div, możemy zastosować następujący kod: css p.tekst { color: blue; } div#obrazki { border: 1px solid black; } Praktyczne zastosowanie selektorów klas i ID w CSS pozwala na precyzyjne dostosowanie stylu poszczególnych elementów na stronie. Zgodność z najlepszymi praktykami oznacza, że stosujemy jednoznaczne i czytelne nazwy klas oraz ID, co ułatwia późniejszą konserwację kodu oraz współpracę z innymi deweloperami. Warto także pamiętać, że wyższej specyfiki selektory, takie jak ID, mają pierwszeństwo wobec klas, co może wpłynąć na końcowy wygląd elementów na stronie.

Pytanie 7

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. zliczyć całkowity koszt wszystkich usług
C. obliczyć średnią arytmetyczną wartości wszystkich usług
D. sprawdzić, ile usług znajduje się w tabeli
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 8

Które wyrażenie należy wstawić w miejsce ??? w pętli zapisanej w języku C++, aby zostały wyświetlone jedynie elementy tablicy tab

int tab[6];
for (int i = 0; ???; i++)
cout << tab[i];
A. i >= 6
B. i <= 6
C. i < 6
D. i > 6
Odpowiedź 'i >= 6' jest błędna, bo prowadzi do tego, że pętla opuści wszystkie elementy tablicy. Gdy i osiągnie 6 lub więcej, pętla staje, więc nic się nie wyświetli, bo przecież indeksy zaczynają się od 0, a kończą na 5. To jest typowy błąd, który wynika z nie do końca zrozumienia, jak działają tablice w C++. Z kolei 'i <= 6' też nie jest ok, bo wtedy pętla zakończy się po wyświetleniu elementu z indeksem 6, co prowadzi do niezdefiniowanego zachowania – a to nie jest fajne, bo nie ma takiego elementu w tablicy z sześcioma elementami. Odpowiedź 'i > 6' też jest źle, bo nie wykona żadnej iteracji, znowu pomijając całą tablicę. Ważne jest, żeby pamiętać, że indeksy tablic zaczynają się od 0, a ostatni indeks przy rozmiarze n wynosi n-1. Stosowanie złych warunków w pętlach może prowadzić do sporych problemów z pamięcią, więc trzeba uważać i pisać warunki, które dobrze pokazują rzeczywisty rozmiar tablicy.

Pytanie 9

Które zdarzenie języka JavaScript jest wyzwalane w momencie, gdy kursor myszy znajduje się na elemencie do którego jest przypisane?

A. onmouseup
B. onmouseout
C. onmouseover
D. onmousedown
W tym pytaniu łatwo się pomylić, bo wszystkie wymienione zdarzenia są związane z myszką, ale każde z nich opisuje inny, dość precyzyjny moment interakcji użytkownika z elementem. Kluczowe jest zrozumienie, że pytanie dotyczy sytuacji, gdy kursor *znajduje się na elemencie*, czyli w praktyce momentu wejścia kursora w obszar tego elementu. Właśnie to zachowanie reprezentuje onmouseover. Zdarzenie onmouseup dotyczy chwili, gdy użytkownik puszcza (zwalnia) przycisk myszy. Nie ma znaczenia samo położenie kursora nad elementem, tylko to, że wcześniej przycisk został wciśnięty i teraz jest puszczany. Typowo wykorzystuje się je przy obsłudze drag & drop, przycisków, elementów interaktywnych, ale nie do reagowania na samo najechanie kursorem. Mylenie onmouseup z onmouseover wynika często z założenia, że „skoro klikam na elemencie, to pewnie chodzi o mysz nad elementem”, ale technicznie są to dwa różne etapy akcji. Z kolei onmouseout jest w pewnym sensie odwrotnością onmouseover. Wyzwala się wtedy, gdy kursor opuszcza obszar elementu, czyli przestaje się nad nim znajdować. Używa się go chociażby do cofania efektów stworzonych przy onmouseover, np. przywracania koloru, ukrywania dymka z podpowiedzią. Jeśli więc szukamy momentu, w którym kursor jest już nad elementem, to onmouseout opisuje raczej sytuację, kiedy z tego elementu „schodzimy”. Zdarzenie onmousedown uruchamia się przy wciśnięciu przycisku myszy, w chwili naciśnięcia, a nie najechania. Jest to ważne w interakcjach typu rysowanie na canvasie, łapanie suwaka, obsługa własnych kontrolek. W praktyce, jeżeli ktoś kojarzy wszystkie te zdarzenia jedynie ogólnie jako „coś od myszy”, to łatwo wrzucić je do jednego worka i strzelać odpowiedzi, ale według specyfikacji DOM Events każde z nich ma ściśle zdefiniowaną rolę. W kontekście pytania tylko onmouseover opisuje wejście kursora w obszar elementu i utrzymywanie się nad nim, więc właśnie ono jest poprawnym wyborem.

Pytanie 10

Ile razy powtórzy się pętla w JavaScript?

var x=1, i=0;
do{
    x*=3;
    i++;
}
while(x!=27);
A. 27 razy
B. 26 razy
C. 3 razy
D. 2 razy
Błędne odpowiedzi wynikają z niepoprawnego zrozumienia działania pętli do-while oraz mechanizmu iteracji w kodzie. Częstym błędem jest założenie, że pętla wykona się tak wiele razy, jak wynosi ostateczna wartość x. Jednak w rzeczywistości, każda iteracja zwiększa x przez jego pomnożenie przez 3, a nie przez dodawanie. Począwszy od wartości 1, zmienna x przyjmuje wartości 3, 9, i 27, co oznacza, że pętla musi wykonać się trzykrotnie, zanim osiągnie wartość równą 27. Innym częstym błędem jest założenie, że pętla do-while nie różni się od standardowej pętli while. W rzeczywistości, do-while wykonuje swój blok kodu przynajmniej raz, zanim oceni warunek, co jest kluczowe dla zrozumienia, dlaczego pętla wykonuje się dokładnie tyle razy. Niewłaściwe zrozumienie tego mechanizmu może prowadzić do nadmiernego wykonywania pętli lub nieoczekiwanego zakończenia przed osiągnięciem zamierzonego celu. Dobre praktyki programistyczne wymagają dokładnego przemyślenia warunków początkowych i końcowych pętli, aby uniknąć błędów logicznych i zapewnić poprawne działanie kodu w różnych sytuacjach praktycznych, takich jak przetwarzanie danych czy iteracyjne obliczenia matematyczne.

Pytanie 11

W SQL, aby zmodyfikować strukturę tabeli, na przykład dodając lub usuwając kolumnę, należy użyć polecenia

A. UPDATE
B. TRUNCATE
C. DROP TABLE
D. ALTER TABLE
Odpowiedź "ALTER TABLE" jest poprawna, ponieważ jest to standardowe polecenie w języku SQL używane do modyfikacji istniejącej struktury tabeli. Dzięki temu poleceniu można dodawać nowe kolumny, usuwać istniejące, a także zmieniać typy danych kolumn. Przykładowo, aby dodać kolumnę "wiek" do tabeli "pracownicy", można użyć polecenia: "ALTER TABLE pracownicy ADD COLUMN wiek INT;". Innym zastosowaniem może być usunięcie kolumny, co osiągamy poprzez zapis: "ALTER TABLE pracownicy DROP COLUMN wiek;". W praktyce, stosowanie ALTER TABLE jest kluczowe w zarządzaniu bazami danych, szczególnie w przypadku rozwijania aplikacji, gdzie schematy danych mogą ewoluować z czasem. Warto pamiętać, że modyfikacje struktury tabeli mogą wpływać na integralność danych, dlatego przed ich wykonaniem zaleca się tworzenie kopii zapasowych oraz dokładne przemyślenie wpływu zmian na aplikacje korzystające z danej bazy danych.

Pytanie 12

W języku JavaScript rezultat wykonania polecenia zmienna++; będzie identyczny jak polecenia

A. zmienna --;
B. zmienna+=1;
C. zmienna=zmienna+10;
D. zmienna===zmienna+1;
Wszystkie pozostałe odpowiedzi są niepoprawne z technicznego punktu widzenia. Pierwsza z nich, 'zmienna--;', wskazuje na operator dekrementacji, który zmniejsza wartość zmiennej o 1. W przeciwieństwie do inkrementacji, dekrementacja prowadzi do obniżenia wartości zmiennej. Na przykład, jeśli zmienna wynosi 5, to po zastosowaniu 'zmienna--;' jej wartość stanie się 4, co jest zupełnie odmiennym wynikiem. Kolejna odpowiedź, 'zmienna=zmienna+10;', wprowadza dodatkowy element, który zwiększa wartość zmiennej o 10, co znacznie odbiega od pierwotnej idei inkrementacji o 1. Przykładowo, przy pierwotnej wartości zmiennej 5, wynik po tej operacji będzie 15, co jest całkowicie innym wynikiem niż w przypadku inkrementacji. Ostatnia z odpowiedzi, 'zmienna===zmienna+1;', jest operacją porównania, która sprawdza, czy wartość zmiennej jest równa wartości zmiennej powiększonej o 1. Wartość ta nigdy nie będzie równa w przypadku, gdy zmienna ma jakąkolwiek wartość inną niż 0. Dla zmiennej o wartości 5, wynik będzie fałszywy, co jest zupełnie inną logiką niż pożądane zwiększenie wartości. Tak więc, wszystkie te odpowiedzi nie oddają idei prostego zwiększenia wartości zmiennej o 1, co czyni je niepoprawnymi w kontekście pytania.

Pytanie 13

Zdefiniowana jest tabela o nazwie wycieczki z atrybutami nazwa, cena oraz miejsca (jako liczba dostępnych miejsc). Aby wyświetlić jedynie nazwy tych wycieczek, dla których cena jest mniejsza niż 2000 złotych i które mają co najmniej cztery wolne miejsca, należy użyć zapytania

A. SELECT nazwa FROM wycieczki WHERE cena<2000 AND miejsca>3;
B. SELECT nazwa FROM wycieczki WHERE cena<2000 OR miejsca>4;
C. SELECT * FROM wycieczki WHERE cena<2000 AND miejsca>4;
D. SELECT * FROM wycieczki WHERE cena<2000 OR miejsca>3;
Zapytanie SQL, które pozwala na wyświetlenie nazw wycieczek, dla których cena jest niższa niż 2000 złotych i które mają przynajmniej cztery wolne miejsca, jest poprawnie sformułowane jako: SELECT nazwa FROM wycieczki WHERE cena<2000 AND miejsca>3. W tym zapytaniu używamy klauzuli SELECT, aby wskazać, że interesuje nas tylko kolumna 'nazwa'. Warunki zawarte w klauzuli WHERE filtrują wyniki na podstawie określonych kryteriów. Operator AND zapewnia, że oba warunki muszą być spełnione jednocześnie, co oznacza, że interesują nas tylko te wycieczki, które są tańsze niż 2000 zł i mają więcej niż 3 wolne miejsca. Technicznie rzecz biorąc, operator < jest używany do porównywania wartości, a operator > do określenia, że liczba miejsc musi być większa od 3. Przykładem działania tego zapytania może być sytuacja, w której w tabeli wycieczki znajdują się dane o takich wycieczkach jak: 'Wakacje w górach' (cena: 1800 zł, miejsca: 5) oraz 'Wczasy nad morzem' (cena: 2200 zł, miejsca: 2). W wyniku działania zapytania uzyskamy jedynie 'Wakacje w górach', ponieważ spełnia ono oba kryteria. Tego rodzaju zapytania są powszechnie stosowane w systemach baz danych, aby efektywnie przeszukiwać i filtryzować dane zgodnie z wymaganiami użytkownika.

Pytanie 14

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

A. aside {float: left; }
B. nav { float: right; }
C. nav { float: left; } aside { float: left; }
D. nav { float: right; } section { float: right; }
W tym zadaniu kluczowe jest zrozumienie, jak naprawdę działa float, a nie tylko samo skojarzenie, że „left to lewo, right to prawo”. Wiele osób myśli, że wystarczy ustawić jeden element na lewo, drugi na prawo i wszystko magicznie się poukłada. W praktyce przeglądarka trzyma się bardzo konkretnych reguł: najpierw liczy kolejność elementów w HTML, potem dopiero stosuje float i układa je możliwie jak najwyżej i jak najbliżej odpowiedniej krawędzi. Jeśli nada się float tylko dla aside albo tylko dla nav, to zmienia się ich pozycja, ale układ trzech bloków nie spełni warunku z zadania: aside i nav nie zamienią się miejscami z pozostawieniem section w środku. Przykładowo, samo float: left na aside niczego nie „zamieni”, bo element i tak pojawia się jako pierwszy w kodzie, więc będzie u góry, tylko że „przyklejony” do lewej. Z kolei ustawienie nav na prawą stronę bez odpowiedniego floatowania section prowadzi do sytuacji, gdzie section nadal zachowuje się jak normalny blok, zwykle ląduje pod elementami pływającymi albo obok nich w sposób mało przewidywalny dla początkującego. Częsty błąd myślowy polega też na tym, że ktoś próbuje wszystkim elementom dać float: left, licząc na to, że przeglądarka „ułoży je po swojemu”. Wtedy jednak wszystkie te bloki ustawiają się w jednym kierunku, w kolejności z HTML, więc nie ma mowy o świadomym „zamienianiu miejsc”. Brak zrozumienia, że float wyjmuje element z normalnego przepływu i wpływa na to, jak kolejne elementy zawijają się wokół niego, prowadzi właśnie do takich błędnych odpowiedzi. Z mojego doświadczenia lepiej jest najpierw narysować sobie prosty schemat: w jakiej kolejności idą znaczniki i które z nich mają pływać w prawo, a które zostać w naturalnym układzie. Dopiero wtedy dobiera się konkretne deklaracje CSS. Takie myślenie przydaje się nie tylko przy float, ale też przy nauce flexboxa czy grida, gdzie kolejność w DOM i własności układu też grają ogromną rolę.

Pytanie 15

Jak określa się program, który realizuje polecenia zawarte w kodzie źródłowym tworzonego oprogramowania bez wcześniejszego generowania programu wynikowego?

A. Interpreter
B. Kompilator
C. Konwerter kodu
D. Konwerter języka
Kompilator to narzędzie, które przekształca kod źródłowy zapisany w jednym języku programowania na kod maszynowy lub inny język pośredni, co umożliwia jego późniejsze wykonanie. Proces ten, choć efektywny w kontekście wydajności końcowego programu, nie jest odpowiedni w sytuacjach, gdy celem jest natychmiastowe wykonanie kodu. Podobnie, konwerter kodu i konwerter języka to pojęcia, które mogą sugerować przekształcanie kodu, ale nie wykonują one kodu bezpośrednio, a raczej zajmują się zmianą jego formatu lub języka, co w wielu przypadkach wymaga wcześniejszego przetworzenia. Często mylone są te pojęcia, co może prowadzić do nieporozumień w zrozumieniu, jak różne narzędzia programistyczne wpływają na proces tworzenia aplikacji. Zrozumienie różnicy między tymi narzędziami jest kluczowe, ponieważ wpływa na wybór technologii oraz metodologii pracy nad projektami. Utrata kontekstu dotyczącego szybkości, efektywności i elastyczności w podejściu do programowania może prowadzić do błędów w planowaniu pracy oraz do wydłużenia czasów realizacji projektów. Z tego względu, w praktyce programistycznej kluczowe jest dostrzeganie tych różnic i umiejętne ich wykorzystanie w zależności od potrzeb projektu.

Pytanie 16

Technika projektowania algorytmów, która polega na dzieleniu problemu na dwa lub więcej mniejszych podproblemów, aż do momentu gdy fragmenty staną się na tyle proste, że można je rozwiązać bezpośrednio, to

A. sito Eratostenesa
B. sortowanie przez wybór
C. dziel i zwyciężaj
D. słowa Fibonacciego
Wybór innych odpowiedzi, takich jak sito Eratostenesa, sortowanie przez wybór czy słowa Fibonacciego, wskazuje na pewne nieporozumienia dotyczące technik projektowania algorytmów. Sito Eratostenesa jest klasycznym algorytmem służącym do znajdowania liczb pierwszych w określonym zakresie, wykorzystując podejście oznaczania wielokrotności, a więc nie ma nic wspólnego z podziałem problemu. Z kolei sortowanie przez wybór to prosty algorytm sortowania, który realizuje sortowanie poprzez wielokrotne wybieranie najmniejszego elementu i umieszczanie go na początku. Ten algorytm nie wykorzystuje strategii dzielenia problemu, ponieważ działa na zasadzie iteracyjnego przeszukiwania danych. Słowa Fibonacciego dotyczą zasady generowania ciągu liczb, która również nie ma związku z metodą dziel i zwyciężaj. Typowym błędem jest mylenie tych koncepcji z bardziej złożonymi schematami rozwiązywania problemów. Przykładem może być niewłaściwe zastosowanie prostych algorytmów, które nie są w stanie efektywnie rozwiązywać bardziej złożonych problemów, co prowadzi do nieoptymalnych wyników. Ważne jest zrozumienie, że odpowiednie zastosowanie odpowiednich metod algorytmicznych jest kluczowe w informatyce oraz inżynierii oprogramowania.

Pytanie 17

Aby odzyskać bazę danych z kopii zapasowej na serwerze MSSQL, należy użyć polecenia

A. EXPORT DATABASE
B. BACKUP DATABASE
C. RESTORE DATABASE
D. UNBACKUP DATABASE
Aby przywrócić bazę danych z kopii zapasowej na serwerze MSSQL, trzeba użyć polecenia RESTORE DATABASE. To bardzo ważna komenda, bo pozwala nam na odzyskanie danych do stanu sprzed jakiejś awarii czy utraty informacji. Można to robić w różnych sytuacjach, na przykład przywracając bazę z pełnej kopii zapasowej albo jakiejś różnicowej. Przykład użycia wygląda tak: RESTORE DATABASE [NazwaBazyDanych] FROM DISK = 'C:\Backup\KopiaZap.pdf' WITH REPLACE; co zastąpi starą bazę nową. Fajnie też wspomnieć, że standardy jak ISO 27001 pokazują, jak ważne są regularne kopie zapasowe, żeby zachować integralność danych i ciągłość działania. A tak przy okazji, przed przywracaniem warto zablokować dostęp do bazy, żeby nie było żadnych konfliktów.

Pytanie 18

Fragment kodu SQL wskazuje, że klucz obcy

FOREIGN KEY (imie) REFERENCES obiekty (imiona) …
A. jest odniesieniem do siebie samego
B. znajduje się w tabeli obiekty
C. wiąże się z kolumną imiona
D. jest przypisany do kolumny obiekty
Odpowiedź wskazująca, że klucz obcy łączy się z kolumną 'imiona' jest prawidłowa, ponieważ definicja klucza obcego w SQL stanowi, że odwołuje się on do kolumny w innej tabeli, w tym przypadku do kolumny 'imiona' w tabeli 'obiekty'. Klucz obcy jest używany do ustanowienia relacji między dwiema tabelami, co poprawia integralność danych i umożliwia tworzenie bardziej złożonych zapytań. Na przykład, jeśli mamy tabelę 'uczniowie' z kolumną 'imie', a tabela 'obiekty' zawiera kolumnę 'imiona' jako klucz podstawowy, to możemy użyć klucza obcego, aby zapewnić, że każde imię w tabeli 'uczniowie' odnosi się do istniejącego rekordu w tabeli 'obiekty'. Dobrą praktyką jest zawsze stosowanie kluczy obcych w celu minimalizacji błędów danych i zapewnienia ich spójności. Użycie kluczy obcych jest zgodne z zasadami normalizacji baz danych, które dążą do eliminacji redundancji i poprawy organizacji danych.

Pytanie 19

Jak należy poprawnie udokumentować wzorzec weryfikacji dla pola nazwa w kodzie aplikacji JavaScript?

Ilustracja do pytania
A. /* Pole nazwa może składać się z dowolnego ciągu cyfr (z wyłączeniem 0), małych i dużych liter. */
B. /* Pole nazwa powinno składać się w tej kolejności: z ciągu cyfr (z wyłączeniem 0), następnie dużej litery i ciągu małych liter. */
C. /* Pole nazwa musi składać się w tej kolejności: z ciągu cyfr (z wyłączeniem 0), następnie dużych liter i dwóch małych liter. */
D. /* Pole nazwa może zawierać dowolny ciąg cyfr (z wyłączeniem 0), następnie musi zawierać dużą literę i ciąg minimum dwóch małych liter. */
Niepoprawne odpowiedzi zakładają niewłaściwą interpretację wymagań dotyczących wzorca walidacji. Pierwsza opcja sugeruje że pole 'nazwa' może składać się z dowolnych cyfr i liter co nie uwzględnia wymogu specyficznej kolejności i liczby znaków co może prowadzić do wprowadzenia nieprawidłowych danych. Taki brak restrykcji mógłby skutkować potencjalnymi lukami w zabezpieczeniach aplikacji. Inna odpowiedź zakłada że po cyfrze musi wystąpić duża litera a następnie ciąg małych liter co nie spełnia wymogu co najmniej dwóch małych liter. Podejście to ignoruje szczegółowe wymagania dotyczące liczby małych liter w końcowej części ciągu. Kolejne błędne założenie mówi o konieczności posiadania dwóch małych liter ale nie wymaga dużej litery co również jest sprzeczne ze wzorcem przedstawionym w zadaniu. Częstym błędem jest nieuwzględnianie pełnej struktury wzorca co powoduje że walidacja jest niekompletna i potencjalnie niewystarczająca do zapewnienia integralności danych. Prawidłowe użycie wyrażeń regularnych wymaga szczegółowego zrozumienia zarówno składni jak i logiki stojącej za walidacją danych aby skutecznie zabezpieczyć aplikację przed nieprawidłowymi wpisami które mogą wpłynąć na jej funkcjonalność i bezpieczeństwo. Zrozumienie zasad poprawnej walidacji jest kluczowym elementem w procesie tworzenia bezpiecznych i niezawodnych aplikacji webowych.

Pytanie 20

Jaką wartość w systemie szesnastkowym przyjmie kolor określony kodem RGB rgb(255, 128, 16)?

A. #008010
B. #ff8011
C. #ff8010
D. #ff0f10
Odpowiedzi takie jak #008010, #ff8011 oraz #ff0f10 są nieprawidłowe z różnych powodów. Zaczynając od #008010, zauważamy, że pierwszy składnik (R) wynosi 0, co oznacza, że kolor nie zawiera czerwonego komponentu. Oryginalny kolor rgb(255, 128, 16) ma maksymalne wartości czerwonego, co wyklucza odpowiedzi z zerowymi wartościami. Przechodząc do #ff8011, widzimy, że ostatnia cyfra jest 1, co wynika z konwersji wartości 16, która w systemie szesnastkowym powinna być 10. Użycie 1 zamiast 10 nie oddaje prawidłowo oryginalnego koloru. Wreszcie, analiza #ff0f10 ujawnia problem z zielonym komponentem, który w tej odpowiedzi wynosi 0, biorąc pod uwagę, że wartość zielona powinna wynosić 128 (80 w systemie szesnastkowym). Te błędy mogą wynikać z nieprecyzyjnego zrozumienia konwersji wartości kolorów między systemami. Ważne jest, aby zrozumieć, że RGB to model addytywny, w którym kolory są tworzone przez łączenie światła czerwonego, zielonego i niebieskiego, a każdy składnik ma swoje przypisane wartości, które muszą być dokładnie odzwierciedlone w kodzie szesnastkowym. Przy pracy z kolorami, szczególnie w projektowaniu cyfrowym, dobrze jest również korzystać z narzędzi do konwersji oraz palet kolorów, aby uniknąć takich pomyłek.

Pytanie 21

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

A. SWF
B. SVG
C. ACE
D. GIF
Format ACE (Archive Compressed Enhanced) jest formatem archiwum, który służy do kompresji danych, a nie do przechowywania animacji. W przeciwieństwie do formatów takich jak SWF, SVG czy GIF, ACE nie jest projektowany do obsługi grafiki ruchomej. SWF to format opracowany przez Adobe, który jest używany do tworzenia i wyświetlania animacji we Flashu. SVG to wektorowy format grafiki, który również wspiera animacje za pomocą CSS i JavaScript. GIF, z kolei, jest jednym z najpopularniejszych formatów do zapisu prostych animacji, dzięki możliwości przechowywania wielu klatek w jednym pliku. Zrozumienie różnic między tymi formatami jest istotne w kontekście tworzenia treści multimedialnych, a także w kontekście ich zastosowań w sieci. Wybór odpowiedniego formatu do animacji może mieć wpływ na wydajność ładowania strony, jakość wizualną oraz możliwości interakcji z użytkownikami.

Pytanie 22

Który zapis jest selektorem pseudoklasy CSS?

A. p#wyroznienie
B. td.wyroznienie
C. a:link
D. body
Poprawna odpowiedź to „a:link”, ponieważ jest to zapis selektora pseudoklasy w CSS. Dwukropek po nazwie elementu „a” oznacza właśnie pseudoklasę – w tym przypadku chodzi o konkretny stan linku, czyli odnośnik, który jeszcze nie został odwiedzony przez użytkownika. W specyfikacji CSS (np. CSS2.1, CSS Selectors Level 3/4) pseudoklasy opisują stany dynamiczne albo logiczne cechy elementu, których nie da się łatwo zapisać w samym HTML, jak :hover, :active, :visited, :focus, :first-child, :nth-child() i wiele innych. Moim zdaniem warto od razu kojarzyć, że jeżeli widzisz dwukropek po selektorze, a potem słowo-klucz, to prawie na pewno jest to pseudoklasa. Przykładowo: a:hover { text-decoration: underline; } a:visited { color: purple; } input:focus { border-color: #00aaff; } Takie selektory pozwalają stylować elementy w zależności od interakcji użytkownika lub ich położenia w drzewie DOM. W praktyce front-endowej bardzo często używa się zestawu pseudoklas dla linków w kolejności: :link, :visited, :hover, :active (tzw. LVHA), żeby przeglądarka stosowała style w przewidywalny sposób. Dobrą praktyką jest też rozróżnianie kolorów linków odwiedzonych (:visited) i nieodwiedzonych (:link), ale w granicach czytelności interfejsu. W nowoczesnym CSS mamy też pseudoklasy takie jak :not(), :is(), :has(), które bardzo ułatwiają pisanie złożonych selektorów bez nadmiernego kombinowania z klasami w HTML. Jednak fundament pozostaje ten sam: pseudoklasa to coś po dwukropku, co opisuje stan, a nie zwykły typ, klasę czy id elementu. Dlatego w tym pytaniu jedynie „a:link” spełnia definicję selektora pseudoklasy.

Pytanie 23

Który atrybut należy zapisać w miejscu trzech kropek w znaczniku HTML5 <blockquote>, aby zdefiniować źródło cytatu?

<blockquote ...="https://pl.wikipedia.org">
Pokojowa Nagroda Nobla jest przyznawana kandydatom, którzy wykonali największą lub najlepszą pracę na rzecz braterstwa między narodami
</blockquote>
A. src
B. alt
C. cite
D. href
Odpowiedź 'cite' jest prawidłowa, ponieważ atrybut ten służy do wskazania źródła cytatu w znaczniku <blockquote>. Atrybut cite pozwala dostarczyć dodatkowych informacji o autorze lub miejscu pochodzenia cytatu, co jest zgodne z zasadami semantycznego HTML5. Użycie atrybutu cite jest ważne dla poprawnej interpretacji treści przez przeglądarki oraz narzędzia przetwarzające dane, takie jak wyszukiwarki internetowe. Przykład zastosowania: <blockquote cite="https://pl.wikipedia.org">...cytat...</blockquote>. Dzięki temu można łatwo zidentyfikować źródło, co zwiększa wiarygodność prezentowanych informacji. W praktyce, dokumenty HTML powinny być tak przygotowane, aby były zarówno przyjazne dla użytkowników, jak i zgodne z wytycznymi standardów W3C, co ma kluczowe znaczenie w kontekście dostępności i SEO.

Pytanie 24

W aplikacji webowej komunikat powinien być wyświetlany jedynie wtedy, gdy użytkownik odwiedza stronę po raz pierwszy. Jakiej funkcji PHP należy użyć w tym przypadku?

A. define
B. setcookie
C. session_destroy
D. mysqli_change_user
Funkcja setcookie w PHP jest wykorzystywana do ustawiania ciasteczek w przeglądarkach użytkowników. Ciasteczka te mogą przechowywać różne informacje, co umożliwia personalizację doświadczeń użytkownika na stronie internetowej. W kontekście opisanego zagadnienia, można zastosować setcookie do zdefiniowania ciasteczka, które będzie informować, że dany użytkownik odwiedza stronę po raz pierwszy. Przykładowe zastosowanie może wyglądać tak: jeśli na stronie nie ma określonego ciasteczka (np. 'first_visit'), można wyświetlić komunikat powitalny i wówczas ustawić ciasteczko z odpowiednim czasem ważności, co pozwala na ukrycie tego komunikatu przy kolejnych wizytach. Użycie tej funkcji jest zgodne z najlepszymi praktykami w zakresie zarządzania sesjami użytkowników, ponieważ pozwala na zachowanie stanu użytkownika w sposób prosty i efektywny. Dodatkowo, dzięki ciasteczkom, można analizować zachowanie użytkowników, co pozwala na dalsze optymalizowanie doświadczeń na stronie.

Pytanie 25

Zadanie przedstawione w ramce polecenia SQL ma na celu

Ilustracja do pytania
A. ustawić wartość pola Uczen na 1
B. powiększyć wartość pola Uczen o jeden
C. ustawić wartość kolumny id_klasy na 1 dla wszystkich wpisów w tabeli Uczen
D. zwiększyć wartość kolumny id_klasy o jeden dla wszystkich wpisów tabeli Uczen
Polecenie SQL UPDATE Uczen SET id_klasy = id_klasy + 1 ma na celu zwiększenie wartości kolumny id_klasy o jeden dla każdego rekordu w tabeli Uczen Jest to typowa operacja w bazach danych gdy chcemy przeprowadzić masową aktualizację wartości w konkretnym polu W tym przypadku kolumna id_klasy jest modyfikowana tak aby każda jej wartość została zwiększona o jeden Jest to szczególnie przydatne w scenariuszach gdzie wartości identyfikatorów czy indeksów muszą być zwiększone ze względu na zmiany struktury danych lub w celu dostosowania do nowych wymagań Możliwość masowej aktualizacji danych jest jednym z głównych powodów dla których SQL jest tak potężnym narzędziem w zarządzaniu bazami danych Operacje tego typu wymagają jednak ostrożności aby uniknąć niepożądanych zmian które mogą wpływać na integralność danych Dlatego też dobre praktyki branżowe zalecają zawsze wykonywanie kopii zapasowych danych przed przeprowadzeniem tego typu operacji oraz dokładne sprawdzenie logiki biznesowej która za nimi stoi Zwrócenie uwagi na wydajność oraz potencjalne blokady przy jednoczesnym dostępie do bazy to również kluczowe aspekty o których należy pamiętać w środowiskach produkcyjnych

Pytanie 26

Rozdzielczość obrazów cyfrowych wyświetlanych na ekranie monitora wyrażona w liczbie pikseli na cal określa jednostka

A. ppi
B. dpi
C. spi
D. lpi
Prawidłowa odpowiedź to ppi, czyli pixels per inch. Ta jednostka opisuje, ile pikseli przypada na jeden cal długości ekranu i dotyczy konkretnie wyświetlaczy: monitorów, ekranów laptopów, smartfonów, tabletów. W praktyce ppi mówi o gęstości pikseli na ekranie, a więc o tym, jak „ostry” będzie obraz przy danej fizycznej wielkości wyświetlacza. Dwa monitory mogą mieć tę samą rozdzielczość w pikselach (np. 1920×1080), ale inne ppi, jeśli mają różne przekątne. Ten o mniejszej przekątnej będzie miał większe ppi, czyli obraz będzie wyglądał na bardziej szczegółowy. W projektowaniu grafiki na potrzeby WWW przyjmuje się, że kluczowa jest właśnie liczba pikseli w poziomie i pionie oraz fizyczne ppi ekranu użytkownika. Moim zdaniem warto pamiętać, że ppi dotyczy świata ekranów i interfejsów użytkownika, a nie druku. W wielu programach graficznych, gdy tworzysz layout strony, ikonę, element UI, ustawienie ppi pliku ma znaczenie głównie przy podglądzie na różnych urządzeniach, a nie dla samego kodu HTML/CSS. Przeglądarka i tak operuje na pikselach logicznych. Jednak przy projektowaniu responsywnym dobrze kojarzyć ppi z pojęciami takimi jak „retina” czy „HiDPI” – tam po prostu zwiększa się gęstość pikseli, dzięki czemu grafika wygląda ostrzej, ale wymaga to przygotowania obrazów w wyższej rozdzielczości. W branży przyjęło się mówić, że ppi to parametr urządzenia wyświetlającego, a nie pliku, i to jest bardzo zdrowe podejście przy pracy z grafiką na potrzeby stron WWW.

Pytanie 27

W znaczniku meta w miejsce kropek należy wpisać

<meta name="description" content="…">
A. nazwę edytora.
B. język dokumentu.
C. streszczenie treści strony.
D. informację o dostosowaniu do urządzeń mobilnych.
W meta tagu, w polu 'content' powinno być streszczenie tego, co jest na stronie. To bardzo ważne dla SEO, czyli optymalizacji strony pod kątem wyszukiwarek. Taki opis pojawia się w wynikach wyszukiwania, co wpływa na to, jak użytkownicy postrzegają stronę i czy klikną w link. Fajnie by było, gdyby był krótki, zrozumiały i zawierał ważne słowa kluczowe dotyczące tematu strony. Na przykład, jeśli strona jest o zdrowym jedzeniu, można napisać coś w stylu: 'Poradnik zdrowego odżywiania z przepisami i wskazówkami na lepszy styl życia'. Użycie tych znaczników meta zgodnie z zaleceniami Google i innych wyszukiwarek zwiększa szansę, że strona będzie lepiej widoczna w sieci. Dlatego dobrze, żeby używać tego znacznika w odpowiedni sposób, bo to naprawdę pomaga w poprawie widoczności strony w internecie.

Pytanie 28

Jakie znaki będą przechowywane w zmiennej $napis po uruchomieniu poniższego kodu PHP?

$napis = "Programowanie w PHP";
$napis = substr($napis, 3, 5);
A. gramo
B. og
C. ogram
D. gr
Wybrana odpowiedź jest niepoprawna, ponieważ nie uwzględnia prawidłowego działania funkcji substr w PHP. Ta funkcja wyodrębnia określoną liczbę znaków z ciągu, zaczynając od określonego indeksu. Tutaj funkcja substr wyodrębniła 5 znaków, zaczynając od czwartego znaku (indeks 3). Stąd poprawna odpowiedź to 'gramo', nie 'og', 'ogram' czy 'gr'. W przypadku odpowiedzi 'og', wydaje się, że nastąpiło błędne zrozumienie jak działa indeksowanie w PHP. Indeksy zaczynają się od zera, nie od jednego. Dlatego też czwarty znak ma indeks 3, a nie 4. W przypadku odpowiedzi 'ogram', prawdopodobnie zrozumiano, że substr wyodrębni całe słowo od indeksu 3, a nie tylko 5 znaków. Natomiast odpowiedź 'gr' sugeruje, że nie zrozumiano liczby znaków do wyodrębnienia. To jest typowy błąd, gdzie zakłada się, że funkcja substr wyodrębni tylko dwa następne znaki, a nie określoną liczbę znaków.

Pytanie 29

Który z frameworków stworzono dla języka skryptowego PHP?

A. Spring
B. Angular
C. Symfony
D. ASP.NET
Wybór frameworka do rozwoju aplikacji webowych wymaga zrozumienia specyfiki i przeznaczenia danego narzędzia. W przypadku Spring, jest to framework stworzony z myślą o języku Java, skoncentrowany na tworzeniu aplikacji korporacyjnych. Jego zalety, takie jak wsparcie dla zależności i aspektowości, czynią go doskonałym wyborem dla programistów Java, ale nie mają zastosowania w kontekście PHP. Angular natomiast to framework JavaScript, który jest używany do budowy interaktywnych aplikacji jednostronicowych (SPA) w przeglądarkach. Oferuje zaawansowane techniki zarządzania stanem oraz komponentami, lecz nie jest przeznaczony do programowania w PHP. ASP.NET jest z kolei technologią opracowaną przez Microsoft dla języka C# i platformy .NET, co czyni go nieodpowiednim dla projektów PHP. Te błędne odpowiedzi mogą wynikać z nieporozumienia w zakresie technologii webowych i ich wzajemnych relacji. Kluczowym elementem przy wyborze frameworka jest zrozumienie, że każde z tych narzędzi jest optymalizowane do konkretnego języka programowania i jego architektury, co podkreśla znaczenie dobrego dopasowania technologii do wymagań projektu.

Pytanie 30

Jakie polecenie pozwala na zwiększenie wartości o jeden w polu RokStudiów w tabeli Studenci dla tych studentów, którzy są na roku 1÷4?

A. UPDATE Studenci, RokStudiow+1 WHERE RokStudiow < 5
B. UPDATE Studenci SET RokStudiow WHERE RokStudiow < 5
C. UPDATE RokStudiow SET RokStudiow++ WHERE RokStudiow < 5
D. UPDATE Studenci SET RokStudiow = RokStudiow+1 WHERE RokStudiow < 5
Odpowiedź 'UPDATE Studenci SET RokStudiow = RokStudiow+1 WHERE RokStudiow < 5;' jest poprawna, ponieważ stosuje właściwą składnię SQL do aktualizacji wartości w kolumnie RokStudiow w tabeli Studenci. Użycie słowa kluczowego 'SET' pozwala na przypisanie nowej wartości do atrybutu, a 'WHERE RokStudiow < 5' zapewnia, że tylko studenci z rokiem studiów od 1 do 4 zostaną zaktualizowani. Przykładowo, jeśli mamy studentów na roku 1, 2, 3 oraz 4, po wykonaniu tego polecenia ich rok studiów wzrośnie o 1, co jest zgodne z praktyką zwiększania roku studiów po zakończeniu danego etapu edukacji. W kontekście dobrych praktyk w programowaniu, warto również dbać o to, aby zapytania były jasne i zrozumiałe, a operacje aktualizacji mogły być łatwo śledzone i analizowane w przyszłości. Odpowiednie użycie komentarzy oraz testowanie zapytań w warunkach niskiego obciążenia bazy danych przed ich wdrożeniem w środowisku produkcyjnym to kluczowe aspekty zapewnienia bezpieczeństwa i integralności danych.

Pytanie 31

W PHP, aby stworzyć obiekt pkt dla klasy Punkt, której definicja znajduje się poniżej, należy użyć polecenia

class Punkt {
  public $x;
  public $y;
}
A. pkt = new Punkt();
B. pkt Punkt();
C. pkt Punkt;
D. Punkt() pkt;
W języku PHP tworzenie obiektu z zdefiniowanej klasy wymaga użycia słowa kluczowego new. Poprawna instrukcja to pkt = new Punkt();. Słowo new jest używane do dynamicznego alokowania pamięci na nowy obiekt klasy Punkt. W tym przypadku Punkt jest klasą, która została wcześniej zdefiniowana w kodzie i zawiera właściwości publiczne takie jak $x i $y. Kiedy wykonujemy new Punkt(), wywoływany jest konstruktor klasy, który w tym przypadku jest domyślny, ponieważ klasa Punkt nie definiuje własnego konstruktora. Warto zauważyć, że zgodnie z dobrymi praktykami programowania w PHP, każda deklaracja nowego obiektu powinna być poprzedzona słowem new, co zapewnia czytelność i jednoznaczność kodu. Ten sposób tworzenia obiektów jest zgodny ze standardem PSR-12. Praktyczne zastosowanie tworzenia obiektów w PHP jest szerokie i obejmuje m.in. modelowanie danych w aplikacjach, obsługę struktur danych oraz implementację wzorców projektowych, takich jak singleton czy fabryka. Korzystanie z obiektów pozwala na przejrzyste i zorganizowane zarządzanie kodem oraz łatwą jego rozbudowę o nowe funkcje.

Pytanie 32

Upload danych to termin, który oznacza

A. trasę transferu pliku.
B. pobieranie plików z serwera.
C. przesyłanie plików na serwer.
D. opóźnienie w transmisji pliku.
Pojęcie „upload danych” w praktyce oznacza wysyłanie, czyli przesyłanie plików lub innych danych z komputera klienta (Twojego urządzenia) na zdalny serwer albo do chmury. W typowym środowisku webowym klientem jest przeglądarka lub aplikacja, a serwerem – np. serwer HTTP, FTP, serwer aplikacyjny czy usługa w chmurze typu AWS S3 czy Google Drive. W standardowym modelu klient–serwer upload to ruch „w górę” – od użytkownika do usługi sieciowej. Download jest odwrotnością, czyli pobieraniem danych z serwera na komputer użytkownika. W protokołach takich jak HTTP upload odbywa się najczęściej poprzez żądania POST lub PUT, gdzie treść wysyłana jest w body requestu. W formularzach HTML odpowiada za to atrybut enctype="multipart/form-data" oraz odpowiednia konfiguracja input type="file". To właśnie wtedy następuje upload pliku – plik z Twojego dysku jest przesyłany na serwer, który może go zapisać w systemie plików, w bazie danych lub przetworzyć w inny sposób. W FTP termin upload jest wręcz podstawowy: komenda STOR służy do wysyłania pliku na serwer. Z mojego doświadczenia warto kojarzyć upload również z kwestiami bezpieczeństwa i wydajności. Dobrą praktyką jest ograniczanie maksymalnego rozmiaru przesyłanych plików, filtrowanie rozszerzeń, skanowanie antywirusowe oraz walidacja typu MIME, żeby nie dopuścić do wgrania złośliwych skryptów. W regulaminach usług i politykach RODO często pojawia się też zapis, że użytkownik jest odpowiedzialny za dane, które uploaduje na serwer. W pracy admina czy programisty webowego umiejętność poprawnej obsługi uploadu (limit czasu, przerwane połączenie, obsługa błędów) jest absolutnie standardem branżowym i jednym z podstawowych elementów każdej poważniejszej aplikacji internetowej.

Pytanie 33

Aby wyciszyć dźwięk w filmie odtwarzanym w przeglądarce, do podanej definicji znacznika <video> powinien zostać dodany atrybut <video> <source src="film.mp4" type="video/mp4"> </video>

A. loop
B. muted
C. autoplay
D. controls
Atrybut 'muted' w znaczniku <video> jest kluczowy dla zarządzania dźwiękiem w odtwarzanych filmach. Gdy dodamy atrybut 'muted', zapewniamy, że film będzie odtwarzany bez dźwięku, co jest szczególnie istotne w kontekście doświadczenia użytkownika na stronie internetowej. W praktyce, wiele stron korzysta z automatycznego odtwarzania filmów w tle, co jest popularne w serwisach informacyjnych oraz mediach społecznościowych. Bez dźwięku, użytkownicy nie są rozpraszani, a strona nie wpływa negatywnie na ich doświadczenie przeglądania. Zgodnie z najlepszymi praktykami, należy również pamiętać o dostępności – filmy bez dźwięku mogą być łatwiej przyswajalne dla osób z problemami ze słuchem, a także unikamy sytuacji, w której nagłe dźwięki mogłyby wywołać dyskomfort. Atrybut 'muted' jest więc nie tylko funkcjonalny, ale także zgodny z zasadami projektowania stron internetowych, które stawiają na komfort użytkownika.

Pytanie 34

Ustalenie klucza obcego jest konieczne do skonstruowania

A. relacji 1..1
B. transakcji
C. relacji 1..n
D. klucza podstawowego
Zdefiniowanie klucza obcego nie jest bezpośrednio związane z relacjami 1..1, transakcjami czy kluczem podstawowym, ponieważ każde z tych pojęć odnosi się do innego aspektu zarządzania danymi w relacyjnych bazach danych. W przypadku relacji 1..1, każdemu rekordowi w jednej tabeli odpowiada dokładnie jeden rekord w drugiej tabeli, co oznacza, że nie ma potrzeby stosowania klucza obcego, gdyż relacja ta nie wymaga wskazywania powiązań między różnymi rekordami. Ponadto, transakcje są zbiorem operacji, które muszą być wykonane w całości lub wcale, a klucz obcy nie ma bezpośredniego wpływu na ich działanie - klucze obce służą głównie do zapewnienia integralności danych, a nie do zarządzania transakcjami. Klucz podstawowy, z drugiej strony, to unikalny identyfikator każdego rekordu w tabeli, a jego definicja jest odrębna od definicji klucza obcego. W praktyce, pomylenie tych pojęć prowadzi do błędnych wniosków o strukturyzacji danych oraz ich relacjach, co może skutkować nieefektywnym projektowaniem baz danych oraz trudnościami w późniejszym zarządzaniu danymi.

Pytanie 35

Podana linia kodu została napisana w języku?

document.getElementById("paragraf1").innerHTML = wynik;
A. C#
B. PHP
C. Python
D. JavaScript
Odpowiedź JavaScript jest prawidłowa, ponieważ linia kodu, którą przedstawiono, wykorzystuje standardową metodę DOM (Document Object Model) do dynamicznej manipulacji zawartością HTML. W kodzie 'document.getElementById("paragraf1").innerHTML = wynik;' funkcja 'getElementById' służy do odnajdywania elementu HTML o identyfikatorze 'paragraf1'. Następnie, przypisanie wartości zmiennej 'wynik' do 'innerHTML' tego elementu zmienia jego zawartość tekstową. JavaScript jest głównym językiem do tworzenia interaktywnych stron internetowych i umożliwia programistom tworzenie dynamicznych funkcjonalności. Przykład praktycznego użycia to sytuacja, gdy na stronie internetowej chcemy wyświetlić obliczone wyniki w czasie rzeczywistym, np. w aplikacjach kalkulatorów online. W kontekście standardów branżowych, używanie DOM do manipulacji elementami HTML w JavaScript jest uważane za dobrą praktykę, a jego znajomość jest niezbędna dla każdego web developera.

Pytanie 36

W języku JavaScript potrzebne jest odwołanie się do elementu znajdującego się w pierwszym paragrafie danego fragmentu kodu HTML. Można to osiągnąć przy użyciu funkcji

<body>
<p>pierwszy paragraf</p>
<p>drugi paragraf</p>
<p>trzeci paragraf</p>
A. getElementsByClassName('p.1')[0]
B. getElementById('p1')
C. getElement('p')
D. getElementsByTagName('p')[0]
Metoda getElementsByClassName("p.1")[0]; jest niepoprawna, ponieważ jej użycie zakłada, że w dokumencie HTML występuje element z klasą "p.1", a w podanym fragmencie HTML nie ma żadnego elementu, który spełniałby ten warunek. Klasy w HTML definiuje się za pomocą atrybutu class, a nie poprzez dotację z kropką w nazwie. W przypadku użycia getElementById("p1");, ta metoda zakłada, że istnieje element z unikalnym identyfikatorem "p1". W przedstawionym fragmencie również tego identyfikatora nie ma, co czyni tę odpowiedź błędną. Metoda getElement("p"); jest nieprawidłowa, ponieważ takiej metody nie ma w standardowym obiekcie document w JavaScript. Programista, zamiast tego, powinien użyć getElementById lub getElementsByTagName. Użycie getElementsByTagName jest najlepszą praktyką, ponieważ pozwala na selekcję wszystkich elementów danego typu. Często mylące są koncepcje związane z selekcją elementów; kluczowe jest zrozumienie, że metody JavaScript są czułe na typy i struktury dokumentu. Dlatego ważne jest, aby dokładnie wiedzieć, jakie elementy chcemy wybrać i jakie metody są do tego dostępne w standardzie DOM.

Pytanie 37

Wskaż zdanie, które jest nieprawdziwe w odniesieniu do poniższej definicji funkcji w języku C++? void zamien(float &x, float &y){ float tmp; tmp=x; x=y; y=tmp; }

A. Funkcja zwraca jakąś wartość
B. Funkcja nie zwraca żadnej wartości
C. Funkcja ma dwa argumenty
D. Funkcja korzysta z parametrów przez referencję
Funkcja zamien jest przykładem funkcji w języku C++, która nie zwraca wartości. Zdefiniowana jako 'void', co oznacza, że nie ma zwracanej wartości. W C++ typ zwracany przez funkcję jest kluczowym elementem definicji funkcji. W przypadku, gdy funkcja jest określona jako 'void', użytkownik nie powinien oczekiwać, że funkcja przekaże jakąkolwiek wartość po jej zakończeniu. Funkcja ta przyjmuje dwa argumenty typu 'float' przekazywane przez referencję, co pozwala na modyfikację ich wartości bezpośrednio w miejscu ich wywołania. Przykładowo, jeżeli zmienne 'x' i 'y' mają przypisane wartości 5.0 i 10.0 przed wywołaniem funkcji, po jej wykonaniu ich wartości zmienią się na odpowiednio 10.0 i 5.0. Oznacza to, że modyfikacja wartości zmiennych zewnętrznych jest możliwa dzięki użyciu referencji. W praktyce oznacza to także, że nie ma potrzeby korzystania z dodatkowych zmiennych do przechowywania wyników, co może być wydajniejsze. Funkcje 'void' są często stosowane w przypadkach, gdy operacje nie wymagają zwracania wyników, a jedynie modyfikacji przekazanych argumentów.

Pytanie 38

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

A. <line>
B. <br>
C. <hl>
D. <hr>
Aby zdefiniować poziomą linię w języku HTML, należy użyć znacznika <hr>. Ten znacznik jest standardowym elementem HTML, który reprezentuje wizualną separację pomiędzy różnymi sekcjami treści. Znacznik <hr> jest samodzielny, co oznacza, że nie wymaga znacznika zamykającego. Jest to element blokowy, co oznacza, że zajmuje całą szerokość swojego rodzica i tworzy odstęp w pionie. W kontekście standardów HTML, <hr> jest częścią struktury dokumentu i jest rekomendowany do użycia w sytuacjach, gdy trzeba oddzielić różne tematy lub sekcje treści. Na przykład, jeśli mamy artykuł podzielony na kilka części, możemy użyć <hr> do wizualnego oddzielenia tych części, co zwiększa czytelność. Można również zastosować style CSS, aby dostosować wygląd linii, takie jak kolor, grubość czy styl linii. Przykładowy kod HTML z użyciem <hr> może wyglądać następująco: <h1>Tytuł Artykułu</h1><p>Treść pierwszej sekcji.</p><hr><p>Treść drugiej sekcji.</p>

Pytanie 39

Określ na podstawie diagramu, jaką liczebność należy zdefiniować przy związku pomiędzy encjami Podręcznik i Wydawnictwo zakładając, że dane dotyczące różnych podręczników odpowiadają jednemu wydawnictwu.

Ilustracja do pytania
A. 1-1 (1 przy encji Podręcznik, 1 przy encji Wydawnictwo)
B. 1-N (1 przy encji Podręcznik, N przy encji Wydawnictwo)
C. N-1 (N przy encji Podręcznik, 1 przy encji Wydawnictwo)
D. M-N (M przy encji Podręcznik, N przy encji Wydawnictwo)
Opisany w pytaniu związek jasno sugeruje sytuację, w której wiele różnych podręczników jest powiązanych z jednym wydawnictwem. To typowy przypadek relacji N–1, czyli wiele‑do‑jednego z punktu widzenia encji Podręcznik. Błędne odpowiedzi wynikają zwykle z pomylenia kierunku patrzenia na relację albo z prób „uogólnienia” modelu ponad to, co naprawdę wynika z założeń. Relacja 1–1 między Podręcznik a Wydawnictwo oznaczałaby, że każdemu wydawnictwu odpowiada dokładnie jeden podręcznik i odwrotnie. To kompletnie nie pasuje do realnego świata, gdzie wydawnictwa mają całe katalogi książek. W modelowaniu danych 1–1 stosuje się rzadko, raczej do technicznego dzielenia tabeli, a nie do takich typowo biznesowych bytów jak książka i wydawnictwo. Odpowiedź 1–N jest myląca, bo odwraca kierunek: oznaczałaby, że pojedynczy podręcznik jest powiązany z wieloma wydawnictwami. To byłby przypadek, gdzie ten sam egzemplarz podręcznika ma kilku wydawców jednocześnie, co jest sprzeczne z treścią zadania. Czasem ktoś myli tu pojęcie „wiele wydań w różnych wydawnictwach”, ale wtedy relacja i tak jest między wydaniem a wydawnictwem, a nie między jednym podręcznikiem a wieloma wydawnictwami w tym samym modelu. Z kolei M–N (lub M–N/M–N w różnych notacjach) opisuje sytuację, w której wiele podręczników może być powiązanych z wieloma wydawnictwami i wymagałaby dodatkowej tabeli asocjacyjnej. To podejście jest stosowane np. przy relacji Student–Przedmiot, ale tutaj zadanie wyraźnie mówi, że różne podręczniki „odpowiadają jednemu wydawnictwu”, więc nie ma podstaw do wprowadzania związku wiele‑do‑wielu. Typowy błąd myślowy polega na tym, że ktoś próbuje projektować „na zapas” i zakłada wszystkie możliwe warianty, zamiast trzymać się dokładnie specyfikacji i odróżniać kierunek relacji: z perspektywy podręcznika jest jeden wydawca, z perspektywy wydawnictwa jest wiele podręczników, stąd poprawne N–1.

Pytanie 40

Która z poniżej wymienionych zasad nie przyczyni się do poprawy czytelności kodu?

A. W każdej linii kodu powinna znaleźć się tylko jedna komenda
B. Nazwy zmiennych muszą odzwierciedlać ich funkcję
C. Kod powinien być napisany bez wcięć i nadmiarowych enterów
D. Trzeba dodawać komentarze w trudniejszych fragmentach kodu
Odpowiedź "Kod powinien być napisany bez wcięć i zbędnych enterów" jest prawidłowa, ponieważ brak wcięć i odpowiednich przerw w kodzie negatywnie wpływa na jego czytelność. Właściwe formatowanie kodu, w tym stosowanie wcięć, jest kluczowe dla zrozumienia struktury programu. Pomaga to programistom w szybkim zlokalizowaniu bloków kodu, a także wzmacnia hierarchię i powiązania między funkcjami i klasami. Na przykład w języku Python, wcięcia są integralną częścią składni, co oznacza, że brak wcięć skutkuje błędami wykonania. W praktyce, pisząc kod, warto zastosować konwencje formatowania takie jak PEP 8 dla Pythona lub Google Java Style Guide dla Javy, które promują przejrzystość i jednoznaczność. W związku z tym, aby zwiększyć czytelność i zrozumiałość kodu, należy stosować wcięcia oraz logiczne podziały. Dobrze sformatowany kod nie tylko ułatwia jego przeglądanie, ale również późniejsze utrzymanie oraz współpracę z innymi programistami.