Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 8 kwietnia 2026 12:08
  • Data zakończenia: 8 kwietnia 2026 12:09

Egzamin niezdany

Wynik: 11/40 punktów (27,5%)

Wymagane minimum: 20 punktów (50%)

Udostępnij swój wynik
Szczegółowe wyniki:
Pytanie 1

Zastosowanie poniższej kwerendy SQL spowoduje usunięcie

DELETE FROM mieszkania WHERE status=1;
A. rekordów, dla których pole status ma wartość 1, z tabeli mieszkania
B. tabeli mieszkania z systemu baz danych
C. tabel, w których pole status ma wartość 1, z bazy danych mieszkania
D. pola o nazwie status w tabeli mieszkania
Patrząc na niepoprawne odpowiedzi, zauważam kilka typowych nieporozumień związanych z tym, jak działają kwerendy SQL. Jedna z odpowiedzi sugeruje, że można usunąć tabelę mieszkania z bazy danych, co jest błędne, bo do tego potrzeba polecenia DROP TABLE, a nie DELETE. To jest zasadnicza różnica! DROP TABLE kasuje całą tabelę, a DELETE tylko pojedyncze rekordy. Kolejny błąd to stwierdzenie, że usuwane jest pole o nazwie status. W rzeczywistości DELETE nie zmienia struktury tabeli ani kolumn; po prostu znika rekord na podstawie wskazanych kryteriów. I jeszcze, że całe tabele będą usunięte, gdzie status wynosi 1 - to też mija się z prawdą. W SQL nie da się usuwać tabeli na podstawie wartości w kolumnach; to działa tylko na danych w tabeli. Te błędy często wynikają z niepełnego zrozumienia, jak różne są operacje na danych i operacje na strukturze bazy. Dlatego ważne jest, aby nauczyć się, jak działają zapytania SQL, bo to pomoże uniknąć takich nieporozumień i skuteczniej zarządzać danymi.

Pytanie 2

Instrukcja REVOKE SELECT ON nazwa1 FROM nazwa2 w SQL pozwala na

A. usuwanie konta użytkownika z bazy danych
B. przyznawanie praw dostępu do tabeli
C. pozbawianie użytkownika uprawnień
D. przyznawanie uprawnień za pomocą ustalonego schematu
Pierwsza z błędnych odpowiedzi dotyczy nadawania uprawnień przy użyciu schematu, co jest trochę mylące. REVOKE nie nadaje, a odbiera uprawnienia. Wiele osób to myli, co prowadzi do zamieszania w zarządzaniu uprawnieniami. Kolejna nieprawidłowa odpowiedź mówi o usuwaniu użytkownika z bazy, co też jest błędne, bo REVOKE nie usuwa kont, a tylko zmienia uprawnienia. Kluczowe jest, żeby rozumieć różnicę między zarządzaniem uprawnieniami a użytkownikami. Ostatnia z błędnych odpowiedzi sugeruje, że to polecenie nadaje prawa do tabeli, a to totalnie mija się z prawdą, bo jego zadaniem jest właśnie odbieranie takich uprawnień. Z mojego doświadczenia, przydatne jest stosowanie GRANT do nadawania uprawnień, żeby uniknąć zamieszania. W zarządzaniu bazami danych ważne jest, żeby wiedzieć, jakie operacje dotyczą bezpieczeństwa danych i jak je właściwie stosować, żeby wszystko działało jak należy.

Pytanie 3

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

A. zadeklarowanie zmiennej napis1 oraz wywołanie funkcji, w której argumentem jest napis1
B. wywołanie metody dla obiektu napisy
C. stworzenie nowej klasy napis1
D. stworzenie instancji obiektu napis1 klasy napisy
Pierwsza z niepoprawnych odpowiedzi sugeruje, że kod tworzy nową klasę 'napis1', co jest błędem. W rzeczywistości, w JavaScript klasy są definiowane za pomocą słowa kluczowego 'class', a 'new napisy()' uruchamia konstruktor, a nie definiuje klasę. Klasy w JavaScript można zdefiniować w następujący sposób: 'class napisy { constructor() { this.text = ''; }}', co wyraźnie różni się od podanego przykładu. Kolejna odpowiedź mówi o wywołaniu metody obiektu 'napisy', co również jest mylące, ponieważ aby wywołać metodę, obiekt musi być już stworzony, a 'new napisy()' nie wywołuje metody, lecz tworzy instancję obiektu. Ostatnia z odpowiedzi wskazuje na zadeklarowanie zmiennej 'napis1' i wywołanie funkcji z argumentem 'napis1', co jest całkowicie niezgodne z intencją podanego kodu. Nie ma tu żadnego wywołania funkcji z argumentem, a 'new' jest używane do instancjonowania klasy, co nie ma nic wspólnego z przekazywaniem argumentów do funkcji. Tak więc, wszystkie te odpowiedzi nie oddają prawidłowego zrozumienia działania konstrukcji obiektowych w JavaScript.

Pytanie 4

Wszelkie dane, które dostarczają informacji o innych danych, nazywane są

A. databus.
B. metadata.
C. markup language.
D. metalanguage.
Poprawna odpowiedź to „metadata”, czyli po polsku metadane. Metadane to wszystkie dane, które opisują inne dane. Można powiedzieć, że są to „informacje o informacji”. Przykład z życia: plik zdjęcia JPG. Sam obraz to dane, a takie elementy jak data wykonania, model aparatu, rozdzielczość, lokalizacja GPS, autor – to właśnie metadane zapisane np. w formacie EXIF. Podobnie w świecie WWW: w dokumencie HTML mamy sekcję <head>, a w niej znaczniki <meta>. Te znaczniki nie są wyświetlane użytkownikowi jako treść strony, ale przekazują wyszukiwarkom i przeglądarkom informacje o stronie, np. opis, słowa kluczowe, kodowanie znaków, język. To jest klasyczny przykład metadanych w praktyce. W bazach danych metadane to np. definicje tabel, typy kolumn, klucze główne, indeksy, ograniczenia. System zarządzania bazą danych przechowuje je w tzw. katalogach systemowych. Dzięki temu wie, jak interpretować rekordy, jakie są relacje między tabelami, jakie są dopuszczalne wartości. Bez metadanych dane byłyby po prostu chaotycznym zbiorem bitów, z którego niewiele da się wyciągnąć. W standardach branżowych stosuje się różne schematy metadanych, np. Dublin Core dla zasobów cyfrowych, czy schema.org dla stron internetowych, aby wyszukiwarki lepiej rozumiały zawartość. Z mojego doświadczenia warto od początku myśleć o metadanych jako o czymś, co podnosi jakość systemu: ułatwia wyszukiwanie, integrację, automatyczne przetwarzanie danych. Dobra praktyka jest taka, żeby dla ważnych zasobów (pliki, rekordy w bazie, strony WWW, API) zawsze planować strukturę metadanych: kto utworzył, kiedy, jaki typ, wersja, status. To bardzo pomaga przy utrzymaniu aplikacji, debugowaniu i rozwoju systemu.

Pytanie 5

Określ złożoność obliczeniową algorytmu naiwnego (zwykłego) poszukiwania minimum w kolekcji liczb?

A. O(n2)
B. O(n3)
C. O(n!)
D. O(n)
Odpowiedzi O(n2), O(n3) oraz O(n!) sugerują, że złożoność obliczeniowa algorytmu naiwnego wyszukiwania minimum jest wyższa niż rzeczywista złożoność O(n). Złożoność O(n2) oznaczałaby, że algorytm wymagałby odwiedzenia każdego elementu dla każdego innego elementu, co jest charakterystyczne dla algorytmów porównawczych, które porównują elementy parzyście, na przykład w sortowaniu bąbelkowym. Tego typu złożoność nie ma jednak zastosowania w prostym wyszukiwaniu minimum, gdzie wystarczy jedno przejście przez zbiór w celu znalezienia najmniejszego elementu. Z kolei O(n3) wskazywałoby na jeszcze bardziej skomplikowaną operację, co w kontekście wyszukiwania minimum jest nieadekwatne. Złożoność O(n!) sugerowałaby, że algorytm wymagałby przetwarzania wszystkich możliwych permutacji zbioru, co jest zjawiskiem spotykanym w złożonych problemach kombinatorycznych, takich jak problem komiwojażera. Aby uniknąć takich nieporozumień, ważne jest zrozumienie, że wyszukiwanie minimum to operacja podstawowa, która nie wymaga złożonych algorytmów ani dodatkowych złożoności, a jedynie prostego przejścia przez zbiór danych. W praktyce, złożoności O(n2), O(n3) i O(n!) nie mają zastosowania w kontekście wyszukiwania minimum, co jest kluczowe dla zrozumienia efektywności algorytmu.

Pytanie 6

Ograniczanie dostępu do niektórych pól lub metod obiektów danej klasy, tak aby mogły być one wykorzystywane wyłącznie przez wewnętrzne metody tej klasy lub funkcje zaprzyjaźnione, to

A. konkatenacja
B. hermetyzacja
C. polimorfizm
D. dziedziczenie
Hermetyzacja to kluczowa koncepcja programowania obiektowego, która polega na ograniczaniu dostępu do pewnych pól i metod danej klasy, aby chronić integralność danych i zapewnić ich poprawne użycie. Przykładem hermetyzacji jest użycie modyfikatorów dostępu, takich jak 'private' i 'protected', co pozwala na ukrycie implementacji od użytkowników klasy, a jednocześnie umożliwia dostęp do tych elementów wewnętrznym metodom klasy. Dzięki hermetyzacji programiści mogą wprowadzać zmiany w implementacji bez wpływu na kod zewnętrzny, co wspiera zasady SOLID i ułatwia zarządzanie dużymi systemami. Rekomendowane praktyki w programowaniu obiektowym zalecają, aby klasy były odpowiedzialne za zarządzanie swoimi danymi, a dostęp do tych danych powinien odbywać się wyłącznie poprzez zdefiniowane interfejsy, takie jak metody publiczne, co pozwala na kontrolowanie operacji i walidację danych. W ten sposób hermetyzacja przyczynia się do większej niezawodności, czytelności oraz łatwości w testowaniu aplikacji.

Pytanie 7

Utworzono bazę danych z tabelą mieszkańcy, która zawiera pola: nazwisko, imię oraz miasto. Następnie przygotowano poniższe zapytanie do bazy:
SELECT nazwisko, imie FROM mieszkańcy WHERE miasto='Poznań' UNION ALL SELECT nazwisko, imie FROM mieszkańcy WHERE miasto='Kraków';
Wskaż zapytanie, które zwróci takie same dane.

A. SELECT nazwisko, imie FROM mieszkańcy WHERE miasto='Poznań' OR miasto='Kraków';
B. SELECT nazwisko, imie FROM mieszkańcy AS 'Poznań' OR 'Kraków';
C. SELECT nazwisko, imie FROM mieszkańcy WHERE miasto BETWEEN 'Poznań' OR 'Kraków';
D. SELECT nazwisko, imie FROM mieszkańcy WHERE miasto HAVING 'Poznań' OR 'Kraków';
Wybór błędnych odpowiedzi wynika z nieprawidłowego zrozumienia podstawowych zasad użycia operatorów w SQL oraz sposobu, w jaki warunki filtracji danych powinny być konstruowane. Zapytanie, które wykorzystuje BETWEEN, jest stosowane do porównywania wartości w określonym zakresie, ale w tym przypadku nie jest możliwe wskazanie dwóch różnych wartości, jak w przypadku miast. Operator OR w kontekście BETWEEN nie ma zastosowania, co sprawia, że ta koncepcja jest fundamentalnie błędna. Z drugiej strony, użycie HAVING jest niewłaściwe, ponieważ służy do filtrowania wyników po agregacji danych, a nie do bezpośredniej filtracji na podstawie wartości. Dodatkowo, konstrukcja SELECT z aliasem 'Poznań' OR 'Kraków' jest syntaktycznie niepoprawna, ponieważ operator OR nie może być użyty w tym kontekście. Typowym błędem w myśleniu jest mylenie operatorów logicznych i ich zastosowania w różnych kontekstach zapytań SQL. Zrozumienie, kiedy używać WHERE, HAVING oraz jak działa składnia zapytań, jest kluczowe dla poprawnego pisania i optymalizacji zapytań baz danych.

Pytanie 8

Jakie cechy powinien posiadać klucz główny?

A. Nie może przybierać wartości, reprezentowany jest przez dokładnie jedno pole tabeli
B. Reprezentowany jest przez jedno pole tabeli, jego wartość nie może ulegać zmianie
C. Jest unikatowy, nie może zawierać pustych wartości
D. Jest unikatowy, może mieć tylko wartości całkowite
Wszystkie błędne odpowiedzi zawierają nieprecyzyjne lub mylące stwierdzenia dotyczące kluczy głównych. Na przykład, twierdzenie, że klucz główny może przyjmować tylko wartości całkowite, nie jest zgodne z rzeczywistością. Klucz główny może być reprezentowany przez różne typy danych, w tym tekst, daty, a nawet złożone obiekty, co czyni tę koncepcję zbyt ograniczoną. Kolejne stwierdzenie, że klucz główny jest reprezentowany przez dokładnie jedno pole tabeli, również nie oddaje pełnego obrazu. Możliwe jest tworzenie kluczy głównych z kilku kolumn, znanych jako klucze złożone, co jest przydatne w sytuacjach, gdy pojedyncza kolumna nie może zapewnić unikalności. Ponadto, stwierdzenie, że wartości klucza głównego nie mogą się zmieniać, wprowadza w błąd. Chociaż zmiana wartości klucza głównego może wprowadzić komplikacje, zwłaszcza w relacjach z innymi tabelami, technicznie jest to możliwe. Właściwe podejście do zarządzania kluczami głównymi obejmuje zrozumienie konsekwencji takich zmian oraz odpowiednie aktualizacje w powiązanych tabelach. Wreszcie, nieznajomość tych aspektów może prowadzić do typowych błędów w projektowaniu baz danych, takich jak brak unikalności lub trudności w zarządzaniu relacjami, co z kolei może wpłynąć na wydajność oraz integralność aplikacji bazodanowych. Zrozumienie roli kluczy głównych jest zatem fundamentalne dla każdego, kto chce skutecznie projektować i zarządzać bazami danych.

Pytanie 9

W SQL, aby zabezpieczyć kwerendę CREATE USER przed utworzeniem konta, jeżeli ono już istnieje, należy użyć składni

A. CREATE USER IF NOT EXISTS 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
B. CREATE USER 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
C. CREATE OR REPLACE USER 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
D. CREATE USER OR DROP 'anna'@'localhost' IDENTIFIED BY 'yu&T%';
Odpowiedź 'CREATE USER IF NOT EXISTS 'anna'@'localhost' IDENTIFIED BY 'yu&T%';' jest poprawna, ponieważ zastosowanie klauzuli 'IF NOT EXISTS' pozwala na utworzenie użytkownika tylko w przypadku, gdy konto o podanej nazwie nie istnieje w systemie. Jest to niezwykle użyteczne w praktyce, ponieważ minimalizuje ryzyko wystąpienia błędów związanych z próbą utworzenia użytkownika, który już został wcześniej zdefiniowany, co mogłoby prowadzić do niepotrzebnych komplikacji w zarządzaniu bazą danych. Dzięki temu podejściu administratorzy mogą tworzyć skrypty, które są bardziej elastyczne i odporne na błędy, co jest zgodne z najlepszymi praktykami w zakresie zarządzania bazami danych. Warto także zaznaczyć, że odpowiednia obsługa błędów oraz unikanie zbędnych operacji wpływa na wydajność systemu, co jest kluczowym aspektem w środowiskach produkcyjnych, gdzie każda operacja ma znaczenie dla dostępności i efektywności aplikacji korzystających z bazy danych.

Pytanie 10

W jaki sposób można ocenić normalizację przedstawionej tabeli?

FirmaAdres
Forbotul. Krótka 11, 22-222 Warszawa
Marbotul. Długa 5, 33-333 Warszawa
A. Tabela jest w trzeciej postaci normalnej
B. Tabela nie została znormalizowana
C. Tabela znajduje się w pierwszej postaci normalnej
D. Tabela znajduje się w drugiej postaci normalnej
Tabela nie jest znormalizowana ponieważ zawiera dane redundancyjne które mogą prowadzić do anomalii aktualizacji W tej tabeli adresy są przechowywane jako pojedyncze pola tekstowe co uniemożliwia ich efektywne wyszukiwanie i przetwarzanie Normalizacja bazy danych polega na usuwaniu redundancji danych poprzez ich dekompozycję na mniejsze tabele z zachowaniem integralności danych i minimalizacją utraty informacji W tym przypadku adresy powinny być rozbite na osobne pola takie jak ulica miasto i kod pocztowy co pozwoli na bardziej precyzyjną kontrolę i manipulację tymi danymi Dodatkowo należy zwrócić uwagę na potencjalne naruszenie zasad drugiej postaci normalnej gdzie klucz główny powinien jednoznacznie identyfikować wartości z nim powiązane Przy poprawnej normalizacji uzyskamy lepszą spójność danych i eliminację nieścisłości co jest kluczowe w przypadku aplikacji gdzie dane są często aktualizowane lub używane do różnorodnych analiz Ostatecznym celem normalizacji jest zwiększenie wydajności i dokładności operacji bazodanowych oraz ułatwienie zarządzania złożonymi strukturami danych

Pytanie 11

Interpreter PHP zwróci błąd i zaniecha wykonania kodu, jeżeli programista

A. będzie definiował zmienne w obrębie warunku
B. będzie tworzył kod bez odpowiednich wcięć
C. pobierze wartość z formularza, w którym pole input nie zostało wypełnione
D. nie umieści średnika po wyrażeniu w instrukcji if, jeśli za nim znajduje się sekcja else
Pojęcie wcięć w kodzie PHP ma charakter stylistyczny, a nie składniowy, co sprawia, że nie są one wymagane do poprawnego działania kodu. PHP nie wymaga wcięć, aby zrozumieć logikę programu, co oznacza, że kod bez wcięć będzie działał poprawnie, chociaż może być trudniejszy do odczytania. Deklaracja zmiennych wewnątrz warunków również nie prowadzi do błędów. Możliwość deklarowania zmiennych w każdej instrukcji warunkowej jest zgodna z zasadami języka PHP, a zmienne te są lokalne dla danego zakresu, co jest zgodne z dobrymi praktykami programistycznymi. Co do pobierania wartości z formularzy, nawet jeśli pole input nie zostało wypełnione, PHP nie zgłasza błędów, lecz zwraca wartość null lub pusty ciąg, co jest normalnym zachowaniem. Typowe błędy myślowe przy podejmowaniu decyzji o tym, co może powodować błędy w PHP, często wynikają z braku zrozumienia różnicy między błędami składniowymi a błędami logicznymi. Błędy składniowe są związane z niepoprawnym formatowaniem kodu, podczas gdy błędy logiczne mogą występować w wyniku niepoprawnej logiki działania programu. Dlatego ważne jest, aby dokładnie rozumieć zasady działania języka i jego składni, aby uniknąć frustracji w procesie tworzenia aplikacji.

Pytanie 12

O czym informuje przeglądarkę internetową zapis <!DOCTYPE html>?

A. W dokumencie każda etykieta musi być zamknięta, nawet te samozamykające.
B. Dokument jest zapisany w wersji HTML 4.
C. Dokument został zapisany w języku HTML 5.
D. W dokumencie wszystkie tagi są zapisane wielkimi literami.
Wszystkie zaproponowane odpowiedzi poza tą właściwą opierają się na nieaktualnych lub błędnych założeniach dotyczących HTML. Kiedy mówimy o dokumentach HTML, istotnym elementem jest zrozumienie znaczenia deklaracji <!DOCTYPE html>. Odpowiedź sugerująca, że dokument powinien być zapisany w wielkich literach, jest nieuzasadniona, ponieważ HTML jest językiem, który nie rozróżnia wielkości liter, a stosowanie wielkich liter nie wpływa na interpretację kodu przez przeglądarki. Z kolei twierdzenie, że dokument został zapisany w HTML 4, jest przestarzałe, ponieważ HTML5 jest następcom HTML 4.1 i jego wprowadzenie oznacza znaczne zmiany w architekturze i możliwościach języka. Dodatkowo, koncepcja, że każdy znacznik musi być zamykany, również nie jest precyzyjna; HTML5 wprowadza elementy samozamykające się, takie jak <img> czy <br>, które nie wymagają zamykania, co różni się od wcześniejszych standardów. Zrozumienie tych podstawowych koncepcji jest kluczowe dla tworzenia nowoczesnych stron internetowych, a nieprawidłowe interpretacje mogą prowadzić do błędów w kodowaniu i niezgodności w wyświetlaniu treści.

Pytanie 13

Jaką szerokość przeznaczono dla treści strony według podanej definicji CSS?

body {
   border: 2px;
   height: 600px;
   width: 560px;
}
A. 600 px
B. 640 px
C. 2 px
D. 560 px
Twoja odpowiedź nie jest poprawna. W CSS, szerokość strony jest określana przez wartość 'width'. W tym przypadku, jest ustawiona na 560 pikseli, co oznacza, że cała zawartość strony będzie wyświetlana w obszarze o takiej szerokości. Szerokość strony ma ogromne znaczenie w projektowaniu stron internetowych. Jego wartość może wpływać na układ elementów na stronie, a także na ogólne doświadczenie użytkownika. To jest aspekt, który zawsze powinien być brany pod uwagę podczas projektowania strony. Wartości, które wybrano jako niepoprawne odpowiedzi nie były zgodne z wartością podaną w kodzie CSS. Ważne jest, aby zawsze sprawdzać zawartość kodu, zanim zdecydujesz się na odpowiedź. W przeciwnym razie, możesz łatwo popełnić błąd, interpretując kod niepoprawnie lub pomijając ważne detale.

Pytanie 14

Zidentyfikuj styl CSS, który doprowadził do uzyskania pokazanego efektu.

Ilustracja do pytania
A. Styl 2
B. Styl 3
C. Styl 4
D. Styl 1
W przypadku Styl 1 zastosowanie border-radius: 10% nie jest wystarczające do uzyskania pełnego zaokrąglenia prowadzącego do kształtu koła w przypadku kwadratowego obrazu. Wartość procentowa 10% oznacza, że promień zaokrąglenia wynosi 10% szerokości lub wysokości elementu, co na ogół skutkuje jedynie delikatnym zaokrągleniem narożników. Styl 3 z kolei próbuje uzyskać efekt okrągły stosując border o wartości 50% jednakże jest to błędne podejście ponieważ wartość ta nie odnosi się do faktycznego promienia zaokrąglenia a jedynie do szerokości i koloru obramowania elementu. To nie wpływa na kształt wewnętrzny elementu jedynie na jego zewnętrzny kontur co nie zmienia formy obrazu na okrągłą. Styl 4 używa właściwości shape: circle co jest błędne w kontekście CSS gdyż taka właściwość nie istnieje w specyfikacji CSS dla zmiany kształtu elementów graficznych. Takie podejście może wynikać z mylnego zrozumienia specyfikacji CSS lub z błędnego użycia właściwości specyficznych dla SVG lub CSS Shapes które nie działają w ten sposób w kontekście tagu img. Kluczowe jest dokładne zrozumienie działania i specyfiki właściwości CSS aby prawidłowo je stosować tworząc estetyczne i funkcjonalne projekty webowe.

Pytanie 15

Dana jest tabela ksiazki z polami: tytul, autor, cena (typu liczbowego). Aby kwerenda SELECT wybrała tylko tytuły, dla których cena jest mniejsza od 50 zł, należy zapisać

A. SELECT tytul FROM ksiazki WHERE cena > '50 zł';
B. SELECT tytul FROM ksiazki WHERE cena < 50;
C. SELECT * FROM ksiazki WHERE cena < 50;
D. SELECT ksiazki FROM tytul WHERE cena < '50 zł';
W zapytaniach SQL bardzo łatwo popełnić drobny błąd składniowy albo logiczny, który na pierwszy rzut oka wygląda niewinnie, a w praktyce całkowicie zmienia działanie kwerendy. W tym pytaniu widać kilka typowych potknięć, które często pojawiają się u osób zaczynających pracę z bazami danych. Jednym z błędów jest używanie SELECT * wtedy, gdy wcale nie potrzebujemy wszystkich kolumn. Z mojego doświadczenia wynika, że to nawyk z pierwszych ćwiczeń: * działa, więc wszyscy go używają. Problem jest taki, że SELECT * FROM ksiazki WHERE cena < 50; co prawda poprawnie filtruje po cenie, ale zwraca wszystkie kolumny, a pytanie wyraźnie mówi o „tytułach”. W realnych systemach oznacza to większy transfer danych, gorszą czytelność kodu i trudniejsze utrzymanie, szczególnie gdy tabela ma kilkanaście czy kilkadziesiąt kolumn. Druga kwestia to porównywanie liczby do tekstu. Jeśli kolumna cena ma typ liczbowy, to warunki w WHERE powinny używać wartości liczbowych, np. 50, bez cudzysłowów i bez jednostek waluty. Konstrukcje w stylu cena > '50 zł' są błędne semantycznie: baza próbuje wtedy porównywać liczbę z napisem, co w zależności od silnika SQL skończy się błędem, nieprzewidywalną konwersją albo po prostu pustym wynikiem. Jednostka waluty, czyli „zł”, powinna być dodawana dopiero na etapie prezentacji danych, a nie przechowywana w kolumnie liczbowej. Pojawia się też nieporozumienie co do tego, co podajemy po SELECT, a co po FROM. Po SELECT wymieniamy kolumny (np. tytul, autor), natomiast po FROM – nazwy tabel (np. ksiazki). Odwrócenie tego, typu SELECT ksiazki FROM tytul, jest po prostu niepoprawną składnią i nie ma sensu z punktu widzenia modelu relacyjnego. To jest jeden z częstszych błędów: mylenie poziomu struktury bazy (tabele) z poziomem danych (kolumny). Dobrym nawykiem jest więc: po pierwsze, zawsze zastanowić się, które kolumny naprawdę są potrzebne; po drugie, pilnować typów danych – liczby porównujemy z liczbami, tekst z tekstem; po trzecie, dbać o poprawną kolejność i znaczenie słów kluczowych SQL. Takie drobne szczegóły przekładają się potem na wydajność, bezpieczeństwo i jakość całej aplikacji webowej.

Pytanie 16

Które wartości będą przechowywane w zmiennych po wykonaniu przedstawionej pętli języka PHP?

$i = 20;    $a = 0;
while($i) {
  $a += 2;
  $i--;
}
A. a = 0, i = 20
B. a = 40, i = 0
C. a = 40, i = 20
D. a = 20, i = 20
Zrozumienie, jak działa pętla w języku PHP, jest kluczowe do efektywnej pracy z tym językiem. Błędne odpowiedzi sugerują niezrozumienie, jak zmienne są aktualizowane i przechowywane w pętli. Można pomylić, że wartość 'a' będzie wynosić 0 lub 20, jeżeli nie zauważymy, że wartość 'a' jest zwiększana o 2 w każdej iteracji pętli. Podobnie, można pomylić, że wartość 'i' pozostanie na 20, jeśli nie zrozumie się, że 'i' jest zmniejszane o 1 w każdej iteracji pętli, aż osiągnie wartość 0, co kończy pętlę. To jest typowy błąd, który można zrobić, jeżeli nie zwróci się uwagi na szczegóły operacji wykonywanych w pętli. Przypomnijmy, że zrozumienie, jak działa pętla, jest kluczowe do tworzenia efektywnych i wydajnych programów w PHP i w każdym języku programowania.

Pytanie 17

Jakie zasady dotyczące tworzenia sekcji w języku HTML są właściwe?

A. W sekcji <head> znajduje się sekcja <body>
B. W sekcji <head> można ustalać szablon strony za pomocą znaczników <div>
C. W sekcji <head> mogą się pojawić znaczniki <meta>, <title>, <link>
D. W sekcji <head> nie wolno umieszczać kodu CSS, tylko odniesienie do pliku CSS
Wybór odpowiedzi, że w części <head> mogą wystąpić znaczniki <meta>, <title>, <link> jest jak najbardziej poprawny. Część <head> dokumentu HTML jest kluczowa dla określenia właściwości oraz meta-informacji o stronie. Znacznik <meta> służy do przechowywania danych o stronie, takich jak opis, słowa kluczowe czy konfiguracja kodowania. Znacznik <title> definiuje tytuł strony, który jest wyświetlany na karcie przeglądarki oraz w wynikach wyszukiwania, co jest istotne dla SEO. Z kolei znacznik <link> pozwala na połączenie dokumentu HTML z zewnętrznymi arkuszami stylów CSS lub innymi zasobami. Stosowanie tych znaczników jest zgodne z obowiązującymi standardami W3C oraz najlepszymi praktykami w zakresie tworzenia stron internetowych. Dobrze zorganizowana sekcja <head> wpływa na efektywność i widoczność strony w wyszukiwarkach, a także na jej ogólną jakość. Przykładem użycia może być dodanie metadanych do strony internetowej, co pozwala na lepsze pozycjonowanie w wyszukiwarkach oraz ułatwia zarządzanie stylem poprzez odwołanie do pliku CSS.

Pytanie 18

Wskaż funkcję PHP, która umożliwia zapisanie odczytanej zawartości pliku do zmiennej, która reprezentuje ciąg znaków?

A. fwrite()
B. get_file()
C. file_get_contents()
D. eof()
Odpowiedzi takie jak fwrite(), eof() oraz get_file() nie są prawidłowe w kontekście odczytu zawartości pliku do zmiennej. fwrite() jest funkcją przeznaczoną do zapisywania danych do pliku, co oznacza, że zamiast odczytu, jej zastosowanie polega na wprowadzaniu danych do plików, co jest odwrotne do potrzebnego działania. eof() natomiast sprawdza, czy osiągnięto koniec pliku, ale nie ma związku z odczytem zawartości pliku do zmiennej; jest to funkcja używana w kontekście strumieni plikowych. Wreszcie, get_file() nie jest standardową funkcją PHP i nie istnieje w dokumentacji PHP. Tego rodzaju błędy mogą wynikać z nieporozumienia dotyczącego funkcji i ich zastosowania w PHP. Ważne jest, aby przy wyborze funkcji kierować się ich specyfiką i przeznaczeniem. Właściwa wiedza na temat dostępnych funkcji oraz ich właściwego użycia jest kluczowa w programowaniu, aby uniknąć błędów logicznych i technicznych w kodzie.

Pytanie 19

Jakiego języka należy użyć, aby stworzyć skrypt realizowany po stronie klienta w przeglądarki internetowej?

A. Python
B. PHP
C. Perl
D. JavaScript
No, wybór języka programowania do pisania skryptów po stronie klienta powinien być dobrze przemyślany. Python, pomimo że bardzo popularny i wszechstronny, to najczęściej jest używany po stronie serwera, na przykład w aplikacjach backendowych albo w analizie danych. W web development nie za bardzo się to sprawdza, chyba że mówimy o frameworkach jak Django czy Flask, które w przeglądarkach nie działają. A co do Perla, to kiedyś był na topie w programowaniu webowym, ale teraz jego użycie w tym kontekście jest niemal zerowe. Perl skupia się głównie na przetwarzaniu tekstu i skryptach serwerowych. PHP, chociaż powszechnie używane do tworzenia aplikacji webowych, również działa po stronie serwera, generując HTML, który potem idzie do przeglądarki. Więc, jak wybierzesz niewłaściwy język, to może być trudność przy wdrażaniu funkcji interaktywnych i w efekcie frustracja przy tworzeniu aplikacji. Dlatego ważne jest, żeby wiedzieć, że JavaScript to jedyny język, który ma pełne wsparcie dla dynamicznych interakcji w przeglądarkach, a ignorowanie go przy tworzeniu skryptów po stronie klienta skończy się kiepskimi rozwiązaniami.

Pytanie 20

W języku JavaScript, funkcja Math.pow() wykorzystuje się do obliczenia

A. wartości bezwzględnej liczby
B. wartości przybliżonej liczby
C. pierwiastka kwadratowego liczby
D. potęgi liczby
Wybierając odpowiedzi, które nie są zgodne z funkcją Math.pow(), można popełnić pewne typowe błędy myślowe. Odpowiedź dotycząca wartości bezwzględnej liczby nie ma związku z działania funkcji Math.pow(). Funkcja ta nie jest zaprojektowana do obliczania wartości bezwzględnej, co jest zadaniem funkcji Math.abs(). Wartość bezwzględna to odległość liczby od zera na osi liczbowej, a obliczenia potęgowania nie mają tutaj zastosowania. Z kolei pierwiastek kwadratowy liczy się zupełnie inaczej. Aby obliczyć pierwiastek kwadratowy z liczby, należy użyć funkcji Math.sqrt(), która zwraca liczbę, która podniesiona do kwadratu daje oryginalną liczbę. Zastosowanie Math.pow() do wyznaczenia pierwiastka kwadratowego, na przykład Math.pow(9, 0.5), daje prawidłowy wynik, ale jest mniej klarowne i mniej wydajne niż użycie dedykowanej funkcji. Ostatnia opcja, dotycząca wartości przybliżonej liczby, również jest błędna, ponieważ Math.pow() nie służy do przybliżania wartości, a jedynie do podnoszenia jej do odpowiedniej potęgi. Ważne jest, aby zrozumieć, jakie funkcje są dostępne w JavaScript i jak mają być stosowane w odpowiednich kontekstach, aby uniknąć nieporozumień oraz poprawić czytelność i efektywność kodu w projektach programistycznych.

Pytanie 21

W kodzie HTML zdefiniowano formularz, który wysyła dane do pliku formularz.php. Po naciśnięciu przycisku typu submit przeglądarka przechodzi do poniższego adresu:

../formularz.php?imie=Anna&nazwisko=Kowalska
Na podstawie podanego adresu można stwierdzić, że dane do pliku formularz.php zostały przesłane metodą:
A. GET
B. COOKIE
C. POST
D. SESSION
Twoja odpowiedź jest prawidłowa. Dane do pliku formularz.php zostały przesłane metodą GET, co można stwierdzić na podstawie adresu URL, który zawiera parametry (imię=Anna&nazwisko=Kowalska) przekazane po znaku zapytania (?). W metodzie GET, parametry są dołączane do adresu URL i są widoczne w pasku adresu przeglądarki. Jest to uniwersalny sposób przesyłania danych, który jest zgodny ze standardem HTTP i jest szeroko stosowany w praktyce. Metoda GET jest najprostszym sposobem przesyłania danych, ale ze względu na widoczność parametrów w adresie URL, nie jest zalecana do przesyłania ważnych informacji, takich jak hasła. W praktyce, metoda GET jest często stosowana do przekazywania informacji niezbędnych do wygenerowania konkretnej strony, takich jak identyfikatory zasobów lub parametry filtrowania.

Pytanie 22

W JavaScript zdarzenie onKeydown zostanie wywołane, gdy klawisz

A. myszki będzie wciśnięty
B. klawiatury będzie wciśnięty
C. myszki będzie zwolniony
D. klawiatury będzie zwolniony
Wybór odpowiedzi związanej z myszą, jak naciśnięcie lub zwolnienie przycisku myszki, jest nieprawidłowy, ponieważ zdarzenie onKeydown nie ma związku z interakcjami myszy. Zdarzenia związane z myszą, takie jak onclick, onmousedown czy onmouseup, są odpowiedzialne za reakcje na działania użytkownika z użyciem myszy, a nie klawiatury. W kontekście zastosowań webowych, mylenie tych dwóch rodzajów interakcji może prowadzić do nieprawidłowego zrozumienia, jak działa system zdarzeń w JavaScript. Zdarzenie onKeydown jest specyficzne dla klawiatury i jest wywoływane tylko, gdy użytkownik naciśnie klawisz na klawiaturze, co jest istotne dla operacji wymagających danych tekstowych lub komend klawiszowych. Ignorowanie tej zasady prowadzi do typowych błędów w programowaniu, takich jak niewłaściwa obsługa zdarzeń, co z kolei może skutkować nieefektywnym działaniem aplikacji i frustracją użytkowników. Ważne jest, aby przy projektowaniu systemów interakcji, wyraźnie rozróżniać rodzaje zdarzeń oraz zrozumieć ich zastosowanie w praktyce, co jest fundamentem efektywnego programowania w JavaScript.

Pytanie 23

Jakie działanie wykonuje poniższy fragment kodu w języku JavaScript? n = "Napis1"; s = n.length;

A. Przypisuje do zmiennej s część napisu z zmiennej n, o długości określonej przez zmienną length
B. Zwraca długość napisu zawartego w zmiennej n
C. Przypisuje wartość zmiennej n do zmiennej s
D. Przypisuje do zmiennej s wartość odpowiadającą długości napisu z zmiennej n
Odpowiedzi, które błędnie interpretują fragment kodu, wskazują na nieporozumienie dotyczące działania właściwości length oraz przypisania wartości w JavaScript. Przypisanie zmiennej n do zmiennej s nie jest możliwe w kontekście omawianego fragmentu, ponieważ zmienna s nie przyjmuje obiektu, a wyłącznie wartość długości napisu. Stwierdzenie, że skrypt wyświetli długość napisu, jest również nieprawidłowe, ponieważ w danym kodzie nie ma operacji wyświetlania - zmienne są jedynie przypisane. Kolejnym błędnym wnioskiem jest przypisanie fragmentu napisu do zmiennej s, co nie ma miejsca, ponieważ length zwraca tylko liczbę, a nie podłańcuch. Podstawowym błędem myślowym jest pomylenie przypisania wartości z operacjami wyświetlania i manipulacji łańcuchami. Warto zrozumieć, że JavaScript, jako język o dynamicznej typizacji, wymaga precyzyjnego rozumienia typów danych, a także właściwości i metod obiektów, co jest kluczowe dla efektywnego programowania. Niezrozumienie tych podstawowych konceptów może prowadzić do wielu błędów w kodzie, które są trudne do zdiagnozowania, a także mogą wpływać na wydajność i stabilność aplikacji.

Pytanie 24

Jaką operację należy przeprowadzić podczas edycji zdjęcia w programie graficznym, żeby białe tło zamienić na przezroczystość?

A. Maksymalnie zmniejszyć jasność
B. Zmienić saturację obrazu
C. Skadrować obraz
D. Dodać kanał alfa
Skadrować obraz, zmienić saturację czy maksymalnie zmniejszyć jasność - to wszystko nie pomoże w uzyskaniu przezroczystości tła. Skadrowanie to sposób na pozbycie się niepotrzebnych fragmentów, ale nie zmienia to struktury pikseli pod kątem przezroczystości. Ludzie mogą myśleć, że usunięcie białego tła podczas kadrowania załatwi sprawę, ale tak naprawdę to tylko przycinanie, a białe tło pozostanie. Zmiana saturacji to temat dotyczący kolorów, ich intensywności, ale z przezroczystością nie ma to nic wspólnego. Ktoś może pomyśleć, że ustawienie saturacji na zero sprawi, że tło będzie przezroczyste, ale to nieprawda. Zmniejszenie jasności może sprawić, że obraz będzie ciemniejszy, ale tło dalej nie zniknie. To błąd, który wiele osób popełnia podczas edycji grafik. Żeby uzyskać przezroczystość, trzeba zrozumieć, jak działa kanał alfa, a nie stosować techniki, które tylko zmieniają kolory czy kształt, ale nie usuwają tła.

Pytanie 25

W trakcie obróbki dźwięku, by wyeliminować niepożądane hałasy wynikające z niskiej jakości mikrofonu, należy użyć narzędzia

A. obwiedni
B. odgłosów echa
C. wyciszenia
D. usuwania szumów
Usuwanie szumów to technika, która jest kluczowa w procesie przetwarzania dźwięku, szczególnie w kontekście nagrań audio i transmisji. Działa na zasadzie identyfikacji i eliminacji niepożądanych dźwięków, takich jak szumy tła, które mogą pochodzić z niskiej jakości mikrofonów lub hałaśliwych środowisk. W praktyce, narzędzia do usuwania szumów analizują dźwięk w czasie rzeczywistym lub podczas edycji i wykorzystują algorytmy, które rozpoznają różnice między pożądanym sygnałem (np. głosem) a szumem. Standardy branżowe, takie jak AES67, podkreślają znaczenie czystości dźwięku w transmisji mediów, co sprawia, że eliminacja szumów staje się kluczowym elementem produkcji audio. Przykładowo, w studio nagraniowym, inżynierowie dźwięku często korzystają z wtyczek do usuwania szumów, aby poprawić jakość nagrań wokalnych. Dzięki tym technikom można osiągnąć klarowność i profesjonalny standard nagrań, co jest niezbędne w przemyśle muzycznym, radiowym czy filmowym.

Pytanie 26

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

A. nav { float: right; } section { float: right; }
B. nav { float: left; } aside { float: left; }
C. aside {float: left; }
D. nav { float: right; }
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 27

Wskaż blok, który jest sformatowany zgodnie z podanym stylem CSS.

background: linear-gradient(to right, LightBlue, DarkBlue);
Ilustracja do pytania
A. Blok 1
B. Blok 2
C. Blok 3
D. Blok 4
Gradienty w CSS są potężnym narzędziem które pozwala na tworzenie gładkich i płynnych przejść między kolorami jednak ich zastosowanie wymaga zrozumienia jak działają różne typy gradientów W przypadku linear-gradient to right LightBlue DarkBlue gradient rozciąga się liniowo od lewej do prawej strony Blok 1 prawdopodobnie wykorzystuje gradient w pionie co wskazuje na niewłaściwe zrozumienie kierunku gradientu Kierunek gradientu jest kluczowy w CSS i warto zwracać uwagę na precyzyjne określenie jego początku i końca Blok 3 ukazuje gradient który wydaje się pochodzić z jednego punktu co sugeruje radial-gradient Zastosowanie radialnych gradientów różni się od liniowych gdyż rozciągają się one od środka do krawędzi Blok 4 wskazuje na nieregularny układ kolorów co może być wynikiem nieprawidłowego zastosowania wartości kolorów lub typów gradientu Takie nieintencjonalne błędy mogą wyniknąć z niewłaściwego zrozumienia składni CSS i zazwyczaj są efektem braku dokładności w definiowaniu stylów Zrozumienie jak gradienty wpływają na estetykę i funkcjonalność pomoże unikać tych błędów i tworzyć bardziej spójne i atrakcyjne wizualnie projekty internetowe Edukacja w zakresie poprawnego stosowania gradientów i ich właściwości umożliwia stworzenie bardziej efektywnych i przyjaznych dla użytkownika rozwiązań webowych co jest istotną częścią współczesnego projektowania UX i UI

Pytanie 28

W tabeli programiści znajdują się kolumny: id, nick, ilosc_kodu, ocena. W kolumnie ilosc_kodu zapisano liczbę linii kodu, które programista napisał w danym miesiącu. Jakie zapytanie umożliwi obliczenie całkowitej liczby linii kodu stworzonych przez wszystkich programistów?

A. SELECT MAX(ilosc_kodu) FROM programisci
B. SELECT SUM(ocena) FROM ilosc_kodu;
C. SELECT COUNT(programisci) FROM ilosc_kodu;
D. SELECT SUM(ilosc_kodu) FROM programisci;
Wybór polecenia 'SELECT SUM(ocena) FROM ilosc_kodu;' jest nieprawidłowy, ponieważ w tym zapytaniu występuje kilka fundamentalnych błędów w rozumieniu struktury bazy danych oraz funkcji agregujących. Po pierwsze, pole 'ocena' nie jest odpowiednie do zsumowania linii kodu, ponieważ zawiera dane dotyczące ocen programistów, a nie ilości linii kodu, co całkowicie mija się z celem poszukiwania sumy linii kodu. Ponadto, tabela 'ilosc_kodu' nie istnieje jako samodzielna jednostka w kontekście tego pytania; 'ilosc_kodu' jest jedynie kolumną w tabeli 'programisci', co oznacza, że nie możemy bezpośrednio z niej tworzyć zapytań. To podkreśla ważny aspekt projektowania baz danych oraz ich strukturalnych zależności. Podczas pisania zapytań SQL należy zawsze mieć na uwadze, w której tabeli znajdują się interesujące nas dane oraz jakie kolumny są dostępne w tej tabeli. Inne nieprawidłowe odpowiedzi, takie jak 'SELECT COUNT(programisci) FROM ilosc_kodu;' również wskazują na misunderstanding, ponieważ użycie COUNT w tym kontekście nie odnosi się do sumowania linii kodu, a jedynie liczenia wierszy, co w tym przypadku nie jest celem. Ponadto, 'SELECT MAX(ilosc_kodu) FROM programisci;' ma zupełnie inną funkcję, polegającą na znalezieniu maksymalnej liczby linii kodu napisanych przez jednego programistę, co również nie jest zgodne z pierwotnym pytaniem. Wniosek jest taki, że kluczowe jest zrozumienie struktury bazy danych oraz logiczne podejście do formułowania zapytań SQL, aby uzyskiwać prawidłowe i użyteczne wyniki.

Pytanie 29

Tablica tab[] jest wypełniona dowolnymi liczbami całkowitymi. Jaka wartość znajdzie się w zmiennej zm2 po wykonaniu prezentowanego fragmentu kodu?

int tab[10];
int zm1 = 0;
double zm2 = 0;

for (int i=0; i < 10; i++)
{
  zm1 = zm1 + tab[i];
}
zm2 = zm1 / 10;
A. Suma liczb od 1 do 10.
B. Średnia arytmetyczna elementów tablicy.
C. Średnia geometryczna liczb od 0 do 9.
D. Suma elementów tablicy.
Rozważanie sumy liczb z tablicy jako wyniku zmiennej zm2 jest błędne, ponieważ zmienna ta nie przechowuje sumy, lecz średnią arytmetyczną. Suma liczb z tablicy jest przechowywana w zmiennej zm1, co jest zupełnie inną wartością. Średnia arytmetyczna jest definicją statystyczną, która odnosi się do podziału całkowitej wartości (sumy) przez liczbę elementów, co w tym przypadku jest realizowane przez zmienną zm2. Wybierając odpowiedź, która twierdzi, że zm2 to suma liczb od 1 do 10, wprowadza w błąd, ponieważ nie ma to związku z danymi w tablicy tab, która zawiera dowolne liczby całkowite. Inna błędna koncepcja to średnia geometryczna, która jest zupełnie innym typem średniej, obliczaną na podstawie iloczynu wartości, a nie ich sumy. Zrozumienie różnicy między tymi pojęciami jest kluczowe w analizie danych i programowaniu, a także w zastosowaniach matematycznych. Błędy w myśleniu, takie jak pomylenie średniej arytmetycznej z geometryczną, mogą prowadzić do poważnych konsekwencji w analizach danych i wnioskach wyciąganych z nich. Niezrozumienie kontekstu tablicy oraz algorytmu prowadzi do nieprawidłowego interpretowania wyników.

Pytanie 30

Jakim systemem do zarządzania wersjami oprogramowania jest

A. GIT
B. FileZilla
C. Eclipse
D. TotalCommander
GIT to system kontroli wersji, który jest niezwykle popularny wśród programistów i zespołów developerskich, umożliwiający śledzenie zmian w kodzie źródłowym oraz współpracę nad projektami. GIT jest rozproszonym systemem, co oznacza, że każdy programista ma pełną kopię repozytorium na swoim lokalnym komputerze. Dzięki temu, praca w trybie offline jest możliwa, a zmiany można synchronizować później z centralnym repozytorium. GIT wspiera również wiele funkcji, takich jak branching, co pozwala na równoległe rozwijanie funkcjonalności bez wpływu na główną wersję kodu. Przykładowo, zespół może pracować nad nowymi funkcjami w osobnych gałęziach i łączyć je z główną wersją po zakończeniu prac. GIT jest również zgodny z najlepszymi praktykami, takimi jak Continuous Integration (CI) i Continuous Deployment (CD), co pozwala na automatyzację procesów testowania i wdrażania oprogramowania. W branży IT GIT stał się standardem, a jego znajomość jest kluczowa dla efektywnej pracy w zespołach. Warto również wspomnieć o platformach takich jak GitHub czy GitLab, które oferują zintegrowane narzędzia do zarządzania projektami opartymi na GIT.

Pytanie 31

W języku PHP uzyskano wyniki kwerend z bazy danych przy użyciu polecenia mysql_query. Aby wydobyć z otrzymanej kwerendy pojedynczy wiersz danych, konieczne jest użycie polecenia

A. mysql_field_len
B. mysql_fetch_lengths
C. mysql_list_fields
D. mysql_fetch_row
Odpowiedź mysql_fetch_row jest poprawna, ponieważ to funkcja, która pozwala na pobranie pojedynczego wiersza danych z zasobu zwróconego przez mysql_query. Zwraca ona tablicę, która zawiera wartości poszczególnych pól w wierszu, co umożliwia ich dalsze przetwarzanie. Dzięki tej funkcji programista może łatwo iterować przez wyniki kwerendy, co jest kluczowe w przypadku przetwarzania danych z baz danych. Na przykład, po wykonaniu kwerendy SELECT, można użyć pętli while, aby pobierać kolejne wiersze danych i je wyświetlać. Dobrą praktyką jest również sprawdzenie, czy zasób kwerendy jest poprawny przed użyciem tej funkcji, co pozwoli uniknąć błędów w czasie wykonywania skryptu. Warto dodać, że w nowszych wersjach PHP zaleca się korzystanie z rozszerzenia mysqli lub PDO, które oferują bardziej zaawansowane możliwości i większe bezpieczeństwo przy pracy z bazami danych.

Pytanie 32

Zastosowana w dokumencie HTML definicja multimediów sprawi, że na stronie

<video controls>
    <source src="video1.mp4" type="video/mp4">
    <source src="video1.ogg" type="video/ogg">
    Komunikat dotyczący video
</video>
A. pod wyświetlanym filmem zostanie wyświetlony napis "Komunikat dotyczący video".
B. zostaną wyświetlone obok siebie dwa filmy z plików: video1.mp4 oraz video1.ogg.
C. zostanie wyświetlony film z pliku video1.mp4 lub w przypadku nierozpoznania formatu MPEG-4 – video1.ogg.
D. wyświetlony film zostanie automatycznie uruchomiony zaraz po załadowaniu strony internetowej.
Niestety, twoja odpowiedź nie jest prawidłowa. Kod HTML, który analizowaliśmy, nie sugeruje, że pod wyświetlanym filmem zostanie wyświetlony napis 'Komunikat dotyczący video' ani że zostaną wyświetlone obok siebie dwa filmy. Takie zachowanie strony wymagałoby dodatkowego kodu HTML i CSS. Także automatyczne uruchomienie filmu po załadowaniu strony nie jest domyślnym zachowaniem elementu video. Warto zauważyć, że takie automatyczne odtwarzanie może być uciążliwe dla użytkowników i jest często uważane za niezgodne z dobrymi praktykami projektowania stron internetowych. Również, aby film automatycznie się odtwarzał, w elemencie video powinien być umieszczony atrybut 'autoplay'. Zrozumienie, jak działa element video HTML i jakie ma atrybuty, jest kluczowe do tworzenia efektywnych i użytecznych stron internetowych.

Pytanie 33

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

A. może mieć wartość pustą (NULL)
B. jest zawsze w formacie numerycznym
C. jest wykorzystywana do szyfrowania treści tabeli
D. musi być unikalna
Istnieje wiele nieporozumień związanych z koncepcją klucza podstawowego w bazach danych. Po pierwsze, stwierdzenie, że klucz podstawowy zawsze musi być numeryczny, jest błędne. Klucze podstawowe mogą być zdefiniowane na podstawie różnych typów danych, takich jak tekst, daty czy inne formaty, pod warunkiem, że wartości te są unikalne. W rzeczywistości, wiele systemów zarządzania bazami danych (DBMS) wspiera klucze podstawowe oparte na typach tekstowych, na przykład numery identyfikacyjne użytkowników mogą być reprezentowane jako ciągi znaków. Kolejnym błędnym założeniem jest, że klucz podstawowy może przyjmować wartość pustą (NULL). W kontekście relacyjnych baz danych, klucz podstawowy nie może mieć wartości NULL, ponieważ jego podstawową funkcją jest jednoznaczna identyfikacja rekordów, a wartość pusta uniemożliwia taką identyfikację. Szyfrowanie zawartości tabeli przez klucz podstawowy również jest mylącym podejściem; klucz podstawowy nie służy do zabezpieczania danych, lecz do ich identyfikacji. W praktyce, aby zapewnić bezpieczeństwo danych, stosuje się inne metody, takie jak szyfrowanie danych w polach tabeli, a nie na poziomie klucza podstawowego. Takie nieporozumienia mogą prowadzić do poważnych błędów w projektowaniu baz danych oraz w ich późniejszym użytkowaniu, dlatego kluczowe jest zrozumienie podstawowych zasad funkcjonowania kluczy w kontekście relacyjnych baz danych.

Pytanie 34

Aby stworzyć układ strony z trzema kolumnami obok siebie, można wykorzystać styl CSS

Ilustracja do pytania
A. C
B. D
C. B
D. A
Poprawna odpowiedź A wykorzystuje właściwość float CSS ustawioną na left oraz szerokość width na 33 procent co pozwala na umieszczenie trzech kolumn obok siebie na stronie internetowej Float jest często używany do tworzenia układów wielokolumnowych gdyż pozwala na pływające rozmieszczenie elementów blokowych wewnątrz kontenera Dzięki ustawieniu szerokości na 33 procent zapewniamy że trzy kolumny będą mogły się zmieścić obok siebie w jednym rzędzie w ramach dostępnej szerokości kontenera Jest to efektywne podejście w przypadku responsywnych projektów gdzie nie zawsze znamy dokładną szerokość dostępnej przestrzeni Floating jest klasycznym podejściem w CSS i chociaż nowe technologie jak flexbox czy grid oferują więcej możliwości jest wciąż powszechnie stosowany w wielu projektach szczególnie gdy chodzi o proste układy Dodatkowo float left jest zgodny z wielu przeglądarkami co zapewnia większą uniwersalność kodu Przy projektowaniu stron zawsze warto pamiętać o dodaniu clearfix lub overflow hidden do rodzica elementów pływających aby uniknąć problemów z zawijaniem się kontenera wokół elementów pływających

Pytanie 35

W relacyjnych systemach baz danych, gdy dwie tabele są powiązane przez ich klucze główne, mamy do czynienia z relacją

A. n..n
B. 1..n
C. n..1
D. 1..1
Błędne odpowiedzi 1..n, n..1 oraz n..n wskazują na różne typy relacji, które nie odpowiadają sytuacji opisanej w pytaniu. Relacja 1..n sugeruje, że jeden rekord w pierwszej tabeli może być powiązany z wieloma rekordami w drugiej tabeli. Przykładem może być relacja między tabelą 'Klienci' i 'Zamówienia', gdzie każdy klient może mieć wiele zamówień. Tego typu relacja nie jest możliwa z kluczem głównym, ponieważ klucz główny jest unikalny dla każdego rekordu. Podobnie, relacja n..1 oznacza, że wiele rekordów w pierwszej tabeli odnosi się do jednego rekordu w drugiej. Może to być interpretowane w kontekście danych, gdzie wiele produktów może być przypisanych do jednego dostawcy. W kontekście kluczy głównych, to również jest niepoprawne, ponieważ klucz główny w jednej tabeli powinien jednoznacznie identyfikować każdy rekord. Natomiast relacja n..n, która oznacza wiele rekordów w obu tabelach, jest również błędna w tym przypadku. Przykładem może być relacja między 'Użytkownikami' i 'Grupami', gdzie użytkownicy mogą należeć do wielu grup, a grupy mogą mieć wielu użytkowników. Żaden z tych typów relacji nie bierze pod uwagę unikalnych powiązań, które można osiągnąć tylko poprzez relację 1..1. Często błędy te wynikają z niepełnego zrozumienia zasad normalizacji baz danych oraz specyficznych zastosowań kluczy głównych, co prowadzi do błędnych wniosków o strukturze danych.

Pytanie 36

W SQL po wykonaniu zapytania ALTER TABLE osoba DROP COLUMN grupa; co się stanie?

A. nazwa kolumny zmieni się na grupa
B. nazwa tabeli zmieni się na grupa
C. kolumna grupa zostanie dodana
D. kolumna grupa zostanie usunięta
Jak nie wskazałeś usunięcia kolumny 'grupa', to niestety nie zrozumiałeś, o co chodzi w tym poleceniu ALTER TABLE w SQL. Zmiana nazwy tabeli na 'grupa' to nie to, co tu mamy, bo ALTER TABLE nie pozwala na coś takiego w jednym ruchu. Można co prawda zmienić nazwę całej tabeli, ale to się robi inaczej. Stwierdzenie, że zmieniono nazwę kolumny na 'grupa' też jest błędne, bo DROP COLUMN ją usuwa, a nie zmienia nazwę. Jeśli chodzi o dodanie kolumny 'grupa', to także jest to nie na miejscu, bo dodawanie kolumny robisz za pomocą ALTER TABLE ... ADD COLUMN. Te wszystkie pomyłki mogą wynikać z mylenia różnych funkcji SQL, które mają różne zastosowania. Ważne, żeby dobrze zrozumieć składnię SQL oraz różnice między poleceniami, które zmieniają tabelę.

Pytanie 37

Przedstawione polecenie MySQL ma za zadanie

 ALTER TABLE ksiazki
 MODIFY tytul VARCHAR(100) NOT NULL;
A. zmienić nazwę kolumny w tabeli ksiazki.
B. zmienić typ kolumny tytul w tabeli ksiazki.
C. usunąć kolumnę tytul z tabeli ksiazki.
D. dodać do tabeli ksiazki kolumnę tytul.
Dobra robota, Twoja odpowiedź jest właściwa! W poleceniu użyto ALTER TABLE, co to jest ten typowy sposób na modyfikowanie tabel w bazach danych. No i to słowo kluczowe MODIFY wskazuje, że zmieniamy coś w już istniejącej kolumnie. W tym przypadku chodzi o kolumnę 'tytul' w tabeli 'ksiazki', której typ zmieniamy na VARCHAR(100), co znaczy, że teraz może ona mieć teksty do 100 znaków długości. Dodatkowo dodajemy ograniczenie NOT NULL, więc 'tytul' musi być zawsze wypełniony. To normalna rzecz, kiedy na przykład musimy dostosować strukturę danych, gdy na przykład zauważymy, że tytuły książek stają się dłuższe albo musimy mieć pewność, że zawsze są wprowadzone.

Pytanie 38

Na przedstawionej grafice widać fragment bazy danych. Jakie kwerendę należy zastosować, aby uzyskać nazwy produktów zakupionych przez klienta o id = 1?

Ilustracja do pytania
A. SELECT nazwa FROM produkty JOIN transakcje_produkty USING(nr_produktu) WHERE nr_klienta = 1
B. SELECT nazwa FROM produkty JOIN transakcje_produkty JOIN transakcje WHERE nr_klienta = 1
C. SELECT nazwa FROM produkty JOIN transakcje_produkty USING(nr_produktu) JOIN transakcje USING(nr_transakcji) WHERE nr_klienta = 1
D. SELECT nazwa FROM produkty JOIN transakcje ON nr_produktu = nr_klienta WHERE nr_klienta = 1
Niepoprawne odpowiedzi wynikają z błędnego zrozumienia struktury bazy danych oraz sposobu łączenia tabel. Błędem w połączeniach JOIN jest nieprawidłowe określenie warunków łączenia tabel co prowadzi do niekompletnych lub błędnych wyników. W przypadku bazy danych relacyjnej kluczowe jest aby każda tabela była prawidłowo połączona przez klucz obcy co zapewnia integralność danych. Źle skonstruowane zapytania mogą powodować problemy wydajnościowe jak również zwracać niewłaściwe informacje co jest szczególnie problematyczne w środowisku produkcyjnym. Typowe błędy myślowe obejmują nieprawidłowe zrozumienie pojęcia klucza obcego jako mechanizmu łączącego tabele oraz błędne stosowanie klauzuli WHERE bez uwzględnienia pełnej relacji między tabelami. Również użycie niewłaściwych aliasów czy nieprecyzyjnych warunków może prowadzić do nieoptymalnych zapytań. Dlatego też ważne jest zrozumienie działania JOIN oraz jego wpływu na zapytania SQL aby móc skutecznie projektować systemy bazodanowe które są skalowalne i efektywne w działaniu.

Pytanie 39

Jakiego rodzaju relację uzyskuje się, łącząc ze sobą dwie tabele za pomocą kluczy głównych?

A. jeden do wielu
B. wiele do jednego
C. jeden do jednego
D. wiele do wielu
Wybór innych odpowiedzi, takich jak 'wiele do wielu', 'wiele do jednego' czy 'jeden do wielu', wynika zazwyczaj z nieporozumienia dotyczącego definicji i zastosowania relacji w bazach danych. Relacja wiele do wielu występuje, gdy wiele rekordów w jednej tabeli może być powiązanych z wieloma rekordami w innej tabeli, co jest często realizowane przez wprowadzenie tabeli pośredniczącej. Na przykład, w przypadku tabel 'Studenci' i 'Kursy', gdzie jeden student może zapisać się na wiele kursów, a każdy kurs może mieć wielu studentów, stosujemy relację wiele do wielu. Z kolei relacja wiele do jednego oznacza, że wiele rekordów w jednej tabeli odnosi się do jednego rekordu w innej tabeli, co ilustruje na przykład relacja 'Zamówienia' do 'Klientów', gdzie wiele zamówień może być złożonych przez jednego klienta. Natomiast relacja jeden do wielu charakteryzuje się tym, że jeden rekord w jednej tabeli może mieć wiele odpowiadających mu rekordów w innej tabeli. Zrozumienie tych typów relacji jest kluczowe dla projektowania efektywnych baz danych, ponieważ pozwala na optymalne zarządzanie danymi i ich integralnością. Użytkownicy, którzy nie dostrzegają subtelności między tymi relacjami, mogą wprowadzać błędy w projektowaniu baz danych, co prowadzi do problemów z wydajnością i spójnością danych.

Pytanie 40

W JavaScript metoda Math.random() ma na celu

A. zwrócić liczbę po zaokrągleniu
B. zwrócić liczbę pseudolosową
C. zaokrąglić liczbę do najbliższej większej liczby całkowitej
D. porównać dwie sekwencje znaków
Odpowiedzi sugerujące, że Math.random() zaokrągla liczby lub porównuje napisy, bazują na nieporozumieniach dotyczących podstawowych funkcjonalności tej metody. Zaokrąglanie liczb odnosi się do operacji, która manipulowałaby wartością liczbową, co nie ma miejsca w działaniu Math.random(). Metoda ta generuje zmiennoprzecinkowe liczby losowe, które mogą być następnie zaokrąglane, ale sama w sobie nie wykonuje tej operacji, co czyni takie odpowiedzi błędnymi. Twierdzenie, że Math.random() zwraca zaokrągloną liczbę również jest mylne, ponieważ wynik jej działania to wartość w przedziale od 0 do 1, która nie jest zaokrąglana, lecz jest to liczba o zmiennoprzecinkowej reprezentacji. Porównywanie napisów to zupełnie inna operacja, która dotyczy analizy tekstów, a nie generowania liczb. Takie pomyłki często wynikają z braku zrozumienia różnicy między różnymi typami operacji w języku programowania. Przykładem tego może być zamiana kontekstu funkcji, gdzie użytkownik myli operacje numeryczne z logicznymi. Zrozumienie, kiedy i jak używać poszczególnych funkcji, jest kluczowe dla efektywnego programowania i unikania podstawowych błędów w kodzie.