Μετάβαση στο περιεχόμενο

Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό — Φεβρουάριος 2021

Εξέταση Φεβρουαρίου 2021 «Προγραμματισμός και Συστήματα στον Παγκόσμιο Ιστό»

Η μεταγραφή προέρχεται από τις 20 σελίδες του φακέλου WEB-FEB21/. Οι γραμμές πλοήγησης της ηλεκτρονικής εξέτασης και το χρονόμετρο δεν μεταγράφονται.

1.png

Ερώτηση 1 / 20 (Σωστό / Λάθος — 1 βαθμός)

Ο παρακάτω κώδικας σε ένα HTML αρχείο, θα εμφανίσει έναν σύνδεσμο (hyperlink) που όταν τον επιλέξουμε θα μας οδηγήσει στην αρχική σελίδα του Πανεπιστημίου Πατρών

<a href = "www.upatras.gr">Παν.Πατρών</a>
  • [ ] Σωστό
  • [ ] Λάθος

2.png

Ερώτηση 2 / 20 (Σωστό / Λάθος — 1 βαθμός)

Για να ανακτήσουμε μια ιστοσελίδα που απαρτίζεται από πολλαπλά ιστοαντικείμενα, μπορούμε για κάθε ένα από αυτά να ανοίγουμε και να κλείνουμε τη σύνδεση προς την πηγή, ή να διατηρούμε τη σύνδεση ανοικτή. Η διαφορά μεταξύ των δύο τρόπων στην αντιλαμβανόμενη καθυστέρηση από το χρήστη είναι αμελητέα.

  • [ ] Σωστό
  • [ ] Λάθος

3.png

Ερώτηση 3 / 20 (Σωστό / Λάθος — 1 βαθμός)

Το παρακάτω XML έγγραφο είναι συντακτικά ορθό (well formed).

<?xml version = "1.0"?>
<books>
    <book1/>
</books>
  • [ ] Σωστό
  • [ ] Λάθος

4.png

Ερώτηση 4 / 20 (Σωστό / Λάθος — 1 βαθμός)

Η τεχνική της «διάφανης δυναμικής αντιγραφής» επιτρέπει στο διαχειριστή ενός δικτύου διανομής περιεχομένου να φιλοξενεί πολλαπλούς ιστότοπους, υπερβαίνοντας τα προβλήματα υπερ-δέσμευσης πόρων.

  • [ ] Σωστό
  • [ ] Λάθος

5.png

Ερώτηση 5 / 20 (Σωστό / Λάθος — 1 βαθμός)

Για να αναπτύξουμε τοπικά στον υπολογιστή μας web εφαρμογές υλοποιημένες σε PHP, το μόνο που χρειαζόμαστε είναι ένας source code editor όπως το Notepad++

  • [ ] Σωστό
  • [ ] Λάθος

6.png

Ερώτηση 6 / 20 (Σωστό / Λάθος — 1 βαθμός)

Ο παρακάτω κώδικας σε ένα HTML αρχείο, θα εμφανίσει μία εικόνα που όταν την επιλέξουμε με πάτημα του ποντικιού θα μας οδηγήσει στο αρχείο mypage.html

<a href = "mypage.html">
    <img src = "images/myimage.png" alt = "Test picture">
</a>
  • [ ] Σωστό
  • [ ] Λάθος

7.png

Ερώτηση 7 / 20 (Σωστό / Λάθος — 1 βαθμός)

Έστω ότι το URL που δίνεται ως παράμετρος στην εντολή fetch παρακάτω, επιστρέφει κωδικό HTTP 404. Τότε το promise που επιστρέφει η fetch() αποτυγχάνει και εκτελείται ο κώδικας στην catch().

fetch('https://example.com/test.json')
    .then(response=>response.json())
    .then(json=>console.log(json))
    .catch(error=>console.log("Error "+error));
  • [ ] Σωστό
  • [ ] Λάθος

8.png

Ερώτηση 8 / 20 (Σωστό / Λάθος — 1 βαθμός)

Η εγκατάσταση τοπικών DNS εξυπηρετητών στο δίκτυο ενός οργανισμού (π.χ. ένα νοσοκομείο) μπορεί να επιταχύνει την πρόσβαση στο περιεχόμενο Παγκοσμίου Ιστού, θυσιάζοντας εν μέρει τη διασφάλιση της εγκυρότητας των απαντήσεων DNS.

  • [ ] Σωστό
  • [ ] Λάθος

9.png

Ερώτηση 9 / 20 (Σωστό / Λάθος — 1 βαθμός)

Στη μέθοδο then() ενός αντικειμένου promise: promiseObj.then(onFulfill, onReject), τα onFulfill, onReject θα πρέπει να είναι callback συναρτήσεις, αλλιώς θα δημιουργηθεί σφάλμα.

  • [ ] Σωστό
  • [ ] Λάθος

10.png

Ερώτηση 10 / 20 (Σωστό / Λάθος — 1 βαθμός)

Ο PHP κώδικας της εικόνας θα εκτελεστεί χωρίς να προκαλέσει σφάλμα, καθώς στην PHP οι θέσεις ενός πίνακα δεν είναι απαραίτητο ούτε να έχουν συνεχόμενη αρίθμηση, ούτε να είναι υποχρεωτικά ακέραιοι αριθμοί.

  • [ ] Σωστό
  • [ ] Λάθος

11.png

Ερώτηση 11 / 20 (Σωστό / Λάθος — 1 βαθμός)

Στη μέθοδο send() του αντικειμένου XMLHttpRequest δίνουμε πάντα σαν παράμετρο τα δεδομένα της φόρμας που θέλουμε να στείλουμε στον server.

  • [ ] Σωστό
  • [ ] Λάθος

12.png

Ερώτηση 12 / 20 (Σωστό / Λάθος — 1 βαθμός)

Θεωρείστε ότι έχω μία απλή PHP web εφαρμογή στην οποία ο μηχανισμός του user control (login/logout κλπ) έχει υλοποιηθεί με χρήση sessions. Αν κάνω login μέσω του browser και στη συνέχεια κάνω restart τον υπολογιστή μου, στην επόμενη επίσκεψη στη web εφαρμογή δε θα χρειαστεί να πραγματοποιήσω νέο login, το session θα είναι ακόμη ενεργό καθώς δε θα έχουν παρέλθει πάνω από 20 λεπτά (default χρόνος ζωής session)

  • [ ] Σωστό
  • [ ] Λάθος

13.png

Ερώτηση 13 / 20 (Σωστό / Λάθος — 1 βαθμός)

Στον παρακάτω κώδικα JavaScript η σειρά εκτύπωσης θα είναι: 1, 4, 3, 2

(function() {
    console.log(1);
    setTimeout(function(){console.log(2)}, 1000);
    setTimeout(function(){console.log(3)}, 0);
    console.log(4);
})();
  • [ ] Σωστό
  • [ ] Λάθος

14.png

Ερώτηση 14 / 20 (Σωστό / Λάθος — 1 βαθμός)

Η τεχνική των μισθώσεων για την διαχείριση της συνέπειας σε ένα δίκτυο περιεχομένου, διασφαλίζει το σύστημα από τις καθυστερήσεις που προκύπτουν λόγω ύπαρξης μη-έγκυρων εγγραφών στις λίστες πελατών.

  • [ ] Σωστό
  • [ ] Λάθος

15.png

Ερώτηση 15 / 20 (Σωστό / Λάθος — 1 βαθμός)

Σε περιπτώσεις που ο διαχειριστής ενός ιστοτόπου επιθυμεί να διασφαλίσει κατά το δυνατό την εγκυρότητα του περιεχόμενου που ανακτούν οι χρήστες, τότε είναι προτιμότερο να επιλέξει τη διανομή του περιεχόμενου μέσω αντιπροσώπων (web proxies)

  • [ ] Σωστό
  • [ ] Λάθος

16.png

Ερώτηση 16 / 20 (Σωστό / Λάθος — 1 βαθμός)

Αν γράψουμε στη μπάρα διευθύνσεων του Google Chrome το URL που δείχνει η εικόνα, θα εκτελεστεί το PHP αρχείο test.php

[Σχήμα: Γραμμή διεύθυνσης του Google Chrome που δείχνει C:\wamp\www\test.php]

  • [ ] Σωστό
  • [ ] Λάθος

17.png

Ερώτηση 17 / 20 (Σωστό / Λάθος — 1 βαθμός)

Ο php κώδικας της εικόνας, θα εκτελεστεί κανονικά, παρότι έχουμε ζητήσει να γίνει συνένωση μιας μεταβλητής τύπου int με μία τύπου string

<?php

$var1 = 2020;
$var2 = "The current year is ";
$var3 = $var2.$var1;

echo $var3;

?>
  • [ ] Σωστό
  • [ ] Λάθος

18.png

Ερώτηση 18 / 20 (Σωστό / Λάθος — 1 βαθμός)

Η PHP διαθέτει μηχανισμό ελέγχου της ορθότητας των MySQL queries πριν αυτά σταλούν στη βάση δεδομένων για εκτέλεση. Επομένως, αν κάποιο SQL ερώτημα έχει λάθος σύνταξη, η PHP δε θα το αποστείλει για εκτέλεση στον MySQL server

  • [ ] Σωστό
  • [ ] Λάθος

19.png

Ερώτηση 19 / 20 (Σωστό / Λάθος — 1 βαθμός)

Ο παρακάτω HTML κώδικας θα εμφανίσει ένα πίνακα στον οποίο όλα τα κελιά θα είναι ορθώς στοιχισμένα.

<table>
    <tr>
        <th colspan="2" rowspan="2">Header</th>
        <td>Data</td>
    </tr>
    <tr>
        <td>Data</td>
        <td>Data</td>
    </tr>
    <tr>
        <td>Data</td>
        <td>Data</td>
        <td>Data</td>
    </tr>

[Λείπει από τη φωτογραφία: το κλείσιμο του κώδικα (</table>) και οι επιλογές απάντησης (Σωστό / Λάθος)]

20.png

Ερώτηση 20 / 20 (Σωστό / Λάθος — 1 βαθμός)

Ο παρακάτω JavaScript κώδικας θα τυπώσει "

This is dynamic

"

var text = document.createTextNode('this is dynamic');
var p = document.createElement('p');
p.appendChild(text);
console.log(p);
  • [ ] Σωστό
  • [ ] Λάθος

Επιπλέον πηγές χωρίς μεταγραφή εδώ (λύσεις → 2021-02.solutions.md, ή διπλότυπες φωτογραφίες της ίδιας σελίδας): 7.png, 13.png, WEB-FEB21.rar

Λύσεις (⚪ AI, μη επαληθευμένο)

Κατάσταση: ⚪ AI, μη επαληθευμένο Πηγή: λύσεις AI (antigravity-gemini, gemini-3.7-flash, sonnet), ανεξάρτητη επανάληψη και αντιπαραβολή· καμία δεν έχει ελεγχθεί από άνθρωπο

Προσοχή

Λύση από AI — ελέγξτε την· δεν έχει επαληθευτεί από άνθρωπο. Η ένδειξη «δύο λύσεις συμφωνούν» δεν σημαίνει ότι η απάντηση είναι σωστή.

AI λύσεις — 2021-02

Οι λύσεις γράφτηκαν από μοντέλα AI και δεν έχουν ελεγχθεί από άνθρωπο. Η αρίθμηση ακολουθεί το αρχείο θεμάτων.

Θέμα 1

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: υψηλή

Το href="www.upatras.gr" χωρίς πρωτόκολλο είναι σχετικός σύνδεσμος προς αρχείο του ίδιου φακέλου. Λάθος.

Θέμα 2

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: υψηλή

Η νέα σύνδεση TCP ανά αντικείμενο προσθέτει RTT (και slow start) ανά αντικείμενο· η διαφορά δεν είναι αμελητέα. Λάθος.

Θέμα 3

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: υψηλή

Ένα ριζικό στοιχείο <books> με άδειο <book1/>, σωστά ανοιγμένα/κλεισμένα· κενά γύρω από το = στη δήλωση XML επιτρέπονται. Well-formed. Σωστό.

Θέμα 4

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: χαμηλή

Από μνήμη θεωρίας (βλ. 2021-01 θέμα 10): η δυναμική αντιγραφή αποφεύγει την υπερ-δέσμευση πόρων που θα απαιτούσε στατική κατανομή ανά ιστότοπο. Πιθανώς Σωστό.

Θέμα 5

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: υψηλή

Χρειάζεται web server με PHP (και βάση αν υπάρχει). Λάθος.

Θέμα 6

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: υψηλή

Εικόνα μέσα σε <a href="mypage.html"> → κλικαμπλ εικόνα προς mypage.html. Σωστό.

Θέμα 7

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: υψηλή

Η fetch() απορρίπτει το promise μόνο σε σφάλμα δικτύου. Για HTTP 404 το promise επιλύεται κανονικά με response.ok === false· το catch δεν εκτελείται εξαιτίας του 404 (μόνο αν αποτύχει αργότερα το response.json()). Λάθος.

Θέμα 8

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: υψηλή

Οι τοπικοί DNS με cache επιταχύνουν την ανάλυση ονομάτων, αλλά μέχρι τη λήξη του TTL μπορεί να δίνουν παλιές απαντήσεις. Σωστό.

Θέμα 9

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: υψηλή

Στο then(onFulfill, onReject) οι παράμετροι που δεν είναι συναρτήσεις αγνοούνται (η τιμή περνά αμετάβλητη) χωρίς σφάλμα. Λάθος.

Θέμα 10

Αξιοπιστία: λύθηκε με βάση τις φωτογραφίες του θέματος· μία λύση AI

Επιλογή: Σωστό

Αιτιολόγηση: Στην εικόνα WEB-FEB21/10.png εμφανίζεται η ερώτηση πολλαπλής επιλογής (Σωστό/Λάθος): «Ο PHP κώδικας της εικόνας θα εκτελεστεί χωρίς να προκαλέσει σφάλμα, καθώς στην PHP οι θέσεις ενός πίνακα δεν είναι απαραίτητο ούτε να έχουν συνεχόμενη αρίθμηση, ούτε να είναι υποχρεωτικά ακέραιοι αριθμοί.» Στο συγκεκριμένο στιγμιότυπο της πλατφόρμας εξέτασης δεν ενσωματώθηκε εσωτερική εικόνα κώδικα (ή παραλείφθηκε από το σύστημα), ωστόσο η ερώτηση είναι πανομοιότυπη με την Ερώτηση 16 του Σεπτεμβρίου 2020 (Screenshot_from_2020-09-23_21-26-38.png) και την αντίστοιχη του Ιουνίου 2022 (20220620_154410.jpg), όπου δίνεται ο κώδικας:

<?php
$students[0] = "Vasilis";
$students['friend'] = "Andreas";
?>
Στην PHP, οι πίνακες (arrays) υλοποιούνται εσωτερικά ως διατεταγμένα λεξικά/πίνακες κατακερματισμού (ordered hash maps). Δεν απαιτείται συνεχόμενη αρίθμηση ούτε κοινός τύπος δεικτών, και επιτρέπεται πλήρως η συνύπαρξη ακέραιων δεικτών (numeric keys) και αλφαριθμητικών κλειδιών (string keys) στον ίδιο πίνακα χωρίς να προκαλείται κανένα σφάλμα ή προειδοποίηση. Επομένως, η πρόταση είναι Σωστό.

Θέμα 11

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: υψηλή

Στα GET δεν στέλνουμε σώμα (send() ή send(null))· δεδομένα δίνονται μόνο σε POST/PUT. Το «πάντα» είναι λάθος. Λάθος.

Θέμα 12

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: υψηλή

Το session id φυλάσσεται σε session cookie που διαγράφεται όταν κλείσει ο browser (το restart τον κλείνει)· χρειάζεται νέο login. Τα 20 λεπτά αφορούν το garbage collection στον server, όχι τη ζωή του cookie. Λάθος.

Θέμα 13

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: υψηλή

Επαλήθευση με node: εκτυπώνει 1, 4, 3, 2 (το timeout 0 τρέχει μετά τον κύριο κώδικα, το timeout 1000 τελευταίο). Σωστό.

Θέμα 14

Αξιοπιστία: μία λύση AI, δεν έχει αντιπαραβληθεί με δεύτερη · εμπιστοσύνη λύτη: χαμηλή

Βλ. 2021-01 θέμα 11 (PDF): οι μισθώσεις περιορίζουν τον χρόνο ισχύος των εγγραφών στις λίστες πελατών, αποφεύγοντας μη-έγκυρες εγγραφές. Πιθανώς Σωστό (δεν επαληθεύτηκε με το υλικό).

Θέμα 15

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: μέτρια

Με αντιπροσώπους (caching) το περιεχόμενο μπορεί να είναι ξεπερασμένο· την εγκυρότητα την εξασφαλίζει καλύτερα η αντιγραφή (replication) υπό τον έλεγχο του διαχειριστή. Λάθος.

Θέμα 16

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: υψηλή

Η διεύθυνση C:\wamp\www\test.php ανοίγει το αρχείο μέσω file://, χωρίς web server· η PHP δεν εκτελείται. Λάθος.

Θέμα 17

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: μέτρια

Η PHP μετατρέπει αυτόματα το int σε string στον τελεστή .· αποτέλεσμα «The current year is 2020», χωρίς σφάλμα. (Η δεύτερη ανάγνωση AI διαφωνεί με τη μεταγραφή αυτής της σελίδας.) Σωστό.

Θέμα 18

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: υψηλή

Η PHP δεν επικυρώνει το SQL· στέλνει το string και ο MySQL επιστρέφει σφάλμα. Λάθος.

Θέμα 19

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: μέτρια

Οι επιλογές και το </table> λείπουν, αλλά ο κώδικας είναι ίδιος με του 2021-01 θέμα 19 και το κλείσιμο δεν επηρεάζει: γραμμή 1 καλύπτει στήλες 1–3, γραμμή 2 (λόγω rowspan) έχει κελιά στις στήλες 3 και 4, γραμμή 3 έχει 3 κελιά. Άνισες γραμμές, άρα η στοίχιση δεν είναι ορθή. Λάθος (αν η πρόταση είναι όπως φαίνεται).

Θέμα 20

Αξιοπιστία: δύο ανεξάρτητες λύσεις συμφωνούν · εμπιστοσύνη λύτη: μέτρια

Το console.log(p) τυπώνει το στοιχείο DOM (στον browser εμφανίζεται <p>this is dynamic</p>), και το κείμενο έχει μικρό «t», ενώ η εκφώνηση γράφει «This». Λάθος.

✔ Επιβεβαίωσε · ✖ Βρήκα λάθος


✖ Βρήκα λάθος στη μεταγραφή