Όνομα: Επώνυμο:

1. Ξαναγράψτε τον παρακάτω κώδικα php διορθώνοντας τα λάθη και απαλοίφοντας κάθε warning και notice.

Σημειώσεις: Δεν μπορείτε να κάνετε καμιά αναζήτηση. Μπορείτε να χρησιμοποιήστε IDE ή online tool (προτεινόμενο PHP Tester).

Αναμενόμενος χρόνος: 3 λεπτά

        
<?php
$x
;
$parseProducts=true;
$deleteFirstProduct=true;

if(
parseProducts){
$products=array(0=>"product1",1=>"product2",2=>"product3",3=>"product4",4=>"product5");
    foreach(
$products as $p){
        
$x[]=$p;    
    }
}
    
$deleteFirstProduct?array_shift($x):$x;
    foreach(
$x as $index=>$value){
       echo 
$index+1.") ".$value."<br>";    
    }
    echo 
"My products' list is: ".$x.";
    
Απάντηση:

2. Γράψτε το output του παρακάτω php κώδικα

Σημειώσεις: Δεν μπορείτε να κάνετε καμιά αναζήτηση ή να χρησιμοποιήστε κάποιον IDE ή online tool.

Αναμενόμενος χρόνος: 2 λεπτά

        
<?php
$x 
"foo";
function 
foo(){ echo "test"; }
$x();
$x++;
$arr = array(1234);
foreach (
$arr as &$value) {
    
$value $value 2;
}
echo 
"<br>".$arr[1];
echo 
"<br>$x";
echo 
"<br>";
$a "1";
$b = &$a;
++
$a;
echo 
$a--."<br>";
$b "2$b";
echo 
$a.", ".$b
?>
Απάντηση:

3. Απαιτείται να δημιουργηθεί function το οποίο θα μετατρέπει κάθε dash/underscore οριοθετημένο (delimetered) word σε camel casing. Camel case ή Pascal case είναι η μετατροπή του πρώτου χαρακτήρα κάθε λέξης σε κεφαλαίο γράμμα.
Το function δέχεται μία παράμετρο string type ($str).
Οι υπόλοιποι χαρακτήρες της λέξης μένουν αμετάβλητοι. Η πρώτη λέξη θα παραμένει ως έχει χωρίς επέμβαση στο case των χαρακτήρων.
Παράδειγμα: Το string this_is-a_tesT μετατρέπεται σε thisIsATesT

Σημειώσεις: Μπορείτε να ανοίξετε το PHP documentation, να χρησιμοποιήσετε IDE ή online tool (προτεινόμενο PHP Tester)
Μπορείτε να κάνετε οποιαδήποτε αναζήτηση σχετική με functions ή regural expressions. ΔΕΝ επιτρέπεται να κάνετε αναζήτηση σχετική με camel ή pascal case.

Να ληφθεί υπόψιν το performance και το re-usability του κώδικα.

Αναμενόμενος χρόνος: 10 λεπτά

        
<?php
function toCamelCase($str){
    }
?>
Απάντηση:

4. Απαιτείται να γραφεί σε Javascript, function queueTime το οποίο θα προσομοιάζει την ουρά ενός πυρήνα CPU με multiple threads.
Το function θα δέχεται δυο παραμέτρους (tasks, threads) όπου η tasks θα είναι array από integers (σε τυχαία, unsorted σειρά) που θα δηλώνουν το χρόνο ολοκλήρωσης κάθε task και η threads θα είναι ένας integer που θα δηλώνει το πλήθος των threads.
Αποτέλεσμα του function θα είναι ο χρόνος ολοκλήρωσης όλων των tasks από τον πυρήνα. Η λογική του πυρήνα λειτουργεί ως εξής:
Κάθε task που υπάρχει στο queue θα μεταφέρεται στον εκάστοτε free thread. Μόλις ολοκληρώνεται ένα task σε κάποιον από τους διαθέσιμους threads, αυτόματα θα ανατίθεται το επόμενο task.
Παράδειγμα: Σε πυρήνα με 2 threads και χρόνους [2,5,8,4,4] ο χρόνος ολοκλήρωσης των tasks είναι 13 λεπτά.

Σημειώσεις: Μπορείτε να χρησιμοποιήσετε IDE ή online tool, ή μπορείτε να εκτελέσετε τον κώδικα στο web console της τρέχουσας web page.
Μπορείτε να κάνετε οποιαδήποτε αναζήτηση σχετική με functions. ΔΕΝ επιτρέπεται να κάνετε αναζήτηση σχετική με την διατύπωση του ερωτήματος.

Να ληφθεί υπόψιν το performance και το re-usability του κώδικα.

Αναμενόμενος χρόνος: 15 λεπτά


        

const queueTime=(tasks,threads)=>{
}
    
Απάντηση:

5. Δίνεται κώδικας σε javascript, jquery που τυπώνει μια φόρμα που περιλαμβάνει input στο οποίο εισάγεται το productCode. Στον κώδικα υπάρχει hint για διευκόλυνση συμπλήρωσης που απευθύνεται στον χρήστη.
Με χρήση jquery, διαμορφώνοντας τον υπάρχον κώδικα, θέλουμε το hint να είναι κρυφό και να εμφανίζεται στο focus event του input element. Μόλις χάνεται το focus να γίνεται πάλι κρυφό. Η εμφάνιση/απόκρυψη του hint θα γίνεται με slide effect.

Σημειώσεις: Μπορείτε να χρησιμοποιήσετε IDE ή online tool, ή μπορείτε να εκτελέσετε τον κώδικα στο web console της τρέχουσας web page.
Μπορείτε να κάνετε οποιαδήποτε αναζήτηση σχετική με functions. ΔΕΝ επιτρέπεται να κάνετε αναζήτηση σχετική με την διατύπωση του ερωτήματος.

Να ληφθεί υπόψιν το performance και το re-usability του κώδικα.

Αναμενόμενος χρόνος: 5 λεπτά

        

function createProductCodeForm(parent) {
  var form = $("<form/>");
  form.append($("<label>").text("Product Code:"));
  form.append($("<input>").attr("name", "productCode").attr("type","text"));
  form.append($("<label>").attr("name","hint").text("The product code can be found on the label."));
  form.append("<br>");
  form.append($("<input>").attr("type","submit"));
  parent.append(form);
}
Απάντηση:

6. Έχουμε δυο πίνακες στην database (sales_store_1,sales_store_2) με κάθε record να αποτελεί μια πώληση.
Θέλουμε με χρήση MySQL να εξάγουμε σε συνδυασμό των δυο πινάκων τις μοναδικές εγγραφές ανά χώρα (country), τις πωλήσεις ανά χώρα (sales) και το σύνολο των αγορών (total_income) του column "price" ανά χώρα. Το αποτέλεσμα θα είναι ordered ανά χώρα σε αλφαβητική σειρά.

Σημειώσεις: Μπορείτε να χρησιμοποιήσετε IDE ή online tool (προτεινόμενο SQL lite).
Μπορείτε να κάνετε οποιαδήποτε αναζήτηση σχετική με functions. ΔΕΝ επιτρέπεται να κάνετε αναζήτηση σχετική με την διατύπωση του ερωτήματος.

Να ληφθεί υπόψιν το performance του κώδικα.

Αναμενόμενος χρόνος: 15 λεπτά

        

CREATE TABLE sales_store_1 (
  id INTEGER NOT NULL PRIMARY KEY, 
  mail VARCHAR(50) NOT NULL,
  name VARCHAR(50) NOT NULL,
  price FLOAT NOT NULL,
  country VARCHAR(50) NOT NULL
);

CREATE TABLE sales_store_2 (
  id INTEGER NOT NULL PRIMARY KEY, 
  mail VARCHAR(50) NOT NULL,
  name VARCHAR(50) NOT NULL,
  price FLOAT NOT NULL,
  country VARCHAR(50) NOT NULL
);

INSERT INTO sales_store_1(id,mail,name,price,country) values(1,"mail1","A",23.5,"GREECE");
INSERT INTO sales_store_1(id,mail,name,price,country) values(2,"mail2","B",15,"GREECE");
INSERT INTO sales_store_1(id,mail,name,price,country) values(3,"mail3","C",20,"ITALY");
INSERT INTO sales_store_1(id,mail,name,price,country) values(4,"mail4","D",40,"GREECE");
INSERT INTO sales_store_2(id,mail,name,price,country) values(1,"mail_1","_A",28.5,"USA");
INSERT INTO sales_store_2(id,mail,name,price,country) values(2,"mail_2","_B",35,"SPAIN");
INSERT INTO sales_store_2(id,mail,name,price,country) values(3,"mail_3","_C",20,"ITALY");
INSERT INTO sales_store_2(id,mail,name,price,country) values(4,"mail_4","_D",40,"UK");
INSERT INTO sales_store_2(id,mail,name,price,country) values(5,"mail_5","_e",40,"UK");
INSERT INTO sales_store_2(id,mail,name,price,country) values(6,"mail_6","_e",22.5,"GREECE");

Απάντηση:

7. Έχουμε έναν πίνακα στην database (customers) με κάθε record να αποτελεί ένα πελάτη.
Θέλουμε με χρήση MySQL να εξάγουμε το mail κάθε πελάτη ο οποίος ήταν τελευταία ενεργός τουλάχιστον 30 ημέρες από την εγγραφή του site για να αξιοποιηθεί για marketing.

Σημειώσεις: Μπορείτε να χρησιμοποιήσετε IDE ή online tool (προτεινόμενο SQL lite).
Μπορείτε να κάνετε οποιαδήποτε αναζήτηση σχετική με functions. ΔΕΝ επιτρέπεται να κάνετε αναζήτηση σχετική με την διατύπωση του ερωτήματος.

Να ληφθεί υπόψιν το performance του κώδικα.

Αναμενόμενος χρόνος: 10 λεπτά

        

CREATE TABLE customers (
  id INTEGER NOT NULL PRIMARY KEY, 
  mail VARCHAR(50) NOT NULL,
  name VARCHAR(50) NOT NULL,
  create_date DATE NOT NULL,
  last_activity DATE NOT NULL
);

INSERT INTO customers(id,mail,name,create_date,last_activity) values(1,"mail1","A","2020-12-12","2021-01-02");
INSERT INTO customers(id,mail,name,create_date,last_activity) values(2,"mail2","B","2020-10-12","2020-12-02");
INSERT INTO customers(id,mail,name,create_date,last_activity) values(3,"mail3","C","2020-12-25","2021-01-10");
INSERT INTO customers(id,mail,name,create_date,last_activity) values(4,"mail4","D","2020-11-01","2020-12-29");
INSERT INTO customers(id,mail,name,create_date,last_activity) values(5,"mail5","E","2020-11-12","2021-01-05");
Απάντηση: