Κορυφαίες 50 ερωτήσεις συνέντευξης J2EE (2025)
Ερωτήσεις & Απαντήσεις στη συνέντευξη J2EE
Ακολουθούν ερωτήσεις και απαντήσεις συνέντευξης J2EE για νεοφώτιστους καθώς και έμπειρους υποψηφίους για να πάρουν τη δουλειά των ονείρων τους.
1) Τι είναι το J2EE;
J2EE σημαίνει Java 2 Enterprise Edition. Η λειτουργικότητα του J2EE είναι η ανάπτυξη πολυεπίπεδων web-based εφαρμογών. Η πλατφόρμα J2EE αποτελείται από ένα σύνολο υπηρεσιών, διεπαφών προγραμματισμού εφαρμογών (API) και πρωτοκόλλων.
Δωρεάν λήψη PDF: Ερωτήσεις και απαντήσεις στη συνέντευξη J2EE
2) Ποια είναι τα τέσσερα στοιχεία της εφαρμογής J2EE;
- Στοιχεία πελατών εφαρμογής.
- Η τεχνολογία Servlet και JSP είναι στοιχεία ιστού.
- Επιχειρηματικά στοιχεία (JavaBeans).
- Στοιχεία προσαρμογέα πόρων
3) Ποιοι είναι οι τύποι πελατών J2EE;
- Applets
- Πελάτες εφαρμογών
- Πελάτες με δυνατότητα Java Web Start, με τεχνολογία Java Web Start.
- Ασύρματοι πελάτες, βασισμένοι στην τεχνολογία MIDP.
4) Τι θεωρείται ως στοιχείο web;
Τα στοιχεία τεχνολογίας Java Servlet και Java Server Pages είναι στοιχεία ιστού. Οι Servlets είναι γλώσσα προγραμματισμού Java που λαμβάνει δυναμικά αιτήματα και κάνει απαντήσεις. Οι σελίδες JSP εκτελούνται ως servlets, αλλά επιτρέπουν μια πιο φυσική προσέγγιση για τη δημιουργία στατικού περιεχομένου.
5) Τι είναι το JSF;
Πρόσωπα JavaServer (JSF) είναι μια διεπαφή χρήστη (UI) σχεδιασμός πλαισίου για εφαρμογές web Java. Το JSF παρέχει ένα σύνολο επαναχρησιμοποιήσιμων στοιχείων διεπαφής χρήστη, ένα πρότυπο για εφαρμογές web. Το JSF βασίζεται στο μοτίβο σχεδιασμού MVC. Αποθηκεύει αυτόματα τα δεδομένα της φόρμας στον διακομιστή και συμπληρώνει την ημερομηνία φόρμας όταν εμφανίζεται στην πλευρά του πελάτη.
6) Ορίστε τον πίνακα Hash
Το HashTable είναι ακριβώς όπως ο χάρτης κατακερματισμού, η συλλογή έχει ένα κλειδί (Μοναδικό), ζεύγη τιμών. Το Hashtable είναι ένα συγχρονισμένο αντικείμενο συλλογής. Δεν επιτρέπει διπλότυπες τιμές ή μηδενικές τιμές.
7) Τι είναι το Hibernate;
αδρανοποίησης είναι μια υπηρεσία αντικειμενικής σχέσης αντιστοίχισης και αναζήτησης ανοιχτού κώδικα. Στο hibernate μπορούμε να γράψουμε HQL αντί για SQL που εξοικονομούν τους προγραμματιστές να αφιερώνουν περισσότερο χρόνο στη σύνταξη της εγγενούς SQL.
Το Hibernate έχει πιο ισχυρό συσχετισμό, κληρονομικότητα, πολυμορφισμό, σύνθεση και συλλογές. Είναι μια όμορφη προσέγγιση για την παραμονή στη βάση δεδομένων χρησιμοποιώντας τα αντικείμενα Java. Η αδρανοποίηση σάς επιτρέπει επίσης να εκφράσετε ερωτήματα χρησιμοποιώντας κριτήρια που βασίζονται σε Java.
8) Ποιος είναι ο περιορισμός του hibernate;
- Πιο αργά στην εκτέλεση των ερωτημάτων από ό,τι τα ερωτήματα χρησιμοποιούνται απευθείας.
- Μόνο υποστήριξη γλώσσας ερωτήματος για σύνθετα κλειδιά.
- Δεν υπάρχουν κοινές αναφορές σε τύπους τιμών.
9) Ποια είναι τα πλεονεκτήματα του hibernate;
- Η αδρανοποίηση είναι φορητή, εννοώ ανεξάρτητη βάση δεδομένων, ανεξαρτησία προμηθευτή.
- Το Standard ORM υποστηρίζει επίσης JPA
- Αντιστοίχιση του αντικειμένου Domain στη σχεσιακή βάση δεδομένων.
- Το Hibernate είναι καλύτερο από το απλό JDBC.
- Πάροχος JPA σε εφαρμογές που βασίζονται σε JPA.
10) Τι είναι το ORM;
Το ORM σημαίνει αντικειμενική-σχεσιακή αντιστοίχιση. Τα αντικείμενα μιας κλάσης Java που αντιστοιχίζονται στους πίνακες μιας σχεσιακής βάσης δεδομένων χρησιμοποιώντας τα μεταδεδομένα που περιγράφουν την αντιστοίχιση μεταξύ των αντικειμένων και της βάσης δεδομένων. Λειτουργεί μετατρέποντας τα δεδομένα από μια αναπαράσταση σε άλλη.
11) Διαφορά μεταξύ αποθήκευσης και αποθήκευσης ενημέρωσης
- σώσει() – Αυτή η μέθοδος στο Hibernate χρησιμοποιείται για την αποθήκευση ενός αντικειμένου στη βάση δεδομένων. Εισάγει μια καταχώρηση εάν η εγγραφή δεν υπάρχει, διαφορετικά όχι.
- saveorupdate () -Αυτή η μέθοδος στην αδρανοποίηση χρησιμοποιείται για την ενημέρωση του αντικειμένου χρησιμοποιώντας αναγνωριστικό. Εάν λείπει το αναγνωριστικό, αυτή η μέθοδος καλεί την save(). Εάν υπάρχει το αναγνωριστικό, θα καλέσει τη μέθοδο ενημέρωσης.
12) Διαφορά μεταξύ μεθόδου φορτίου και λήψης;
- φορτίο() δεν μπορεί να βρει το αντικείμενο από την προσωρινή μνήμη ή τη βάση δεδομένων, δημιουργείται μια εξαίρεση και η μέθοδος load() δεν επιστρέφει ποτέ null.
- παίρνωΗ μέθοδος () επιστρέφει μηδενική αν το αντικείμενο δεν μπορεί να βρεθεί. Η μέθοδος load() μπορεί να επιστρέψει έναν διακομιστή μεσολάβησης αντί για μια πραγματική επίμονη παρουσία, η get() δεν επιστρέφει ποτέ διακομιστή μεσολάβησης.
13) Πώς να καλέσετε μια αποθηκευμένη διαδικασία σε κατάσταση αδρανοποίησης;
{ ? = call thisISTheProcedure() }
14) Ποια είναι τα οφέλη του ORM;
- Παραγωγικότητα
- Συντήρηση
- 💪 Βελτίωση της απόδοσης στην άσκηση
- Ανεξαρτησία πωλητή
15) Ποιες είναι οι βασικές διεπαφές του πλαισίου Hibernate;
- Διεπαφή συνεδρίας
- Διεπαφή SessionFactory
- Διεπαφή διαμόρφωσης
- Διεπαφή συναλλαγών
- Διεπαφή ερωτήματος και κριτηρίων
16) Ποια είναι η επέκταση αρχείου που χρησιμοποιείται για το αρχείο αντιστοίχισης αδρανοποίησης;
Το όνομα του αρχείου θα πρέπει να είναι ως εξής: filename.hbm.xml
17) Ποιο είναι το όνομα αρχείου του αρχείου διαμόρφωσης αδρανοποίησης;
Το όνομα του αρχείου θα πρέπει να είναι ως εξής: hibernate.cfg.xml
18) Πώς εξηγείται το Hibernate ανεξάρτητο από τη βάση δεδομένων;
Μόνο η αλλαγή της πλήρους βάσης δεδομένων της ιδιοκτησίας μπορεί να αντικατασταθεί.
<property name="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</property> and <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
19) Πώς να προσθέσετε το αρχείο αντιστοίχισης αδρανοποίησης στο αρχείο διαμόρφωσης αδρανοποίησης;
Με
20) Ορίστε τη συγκέντρωση σύνδεσης;
Η συγκέντρωση σύνδεσης είναι ένας μηχανισμός επαναχρησιμοποίησης της σύνδεσης που περιέχει τον αριθμό της ήδη δημιουργημένης σύνδεσης αντικειμένου. Έτσι, όποτε είναι απαραίτητο για ένα αντικείμενο, αυτός ο μηχανισμός χρησιμοποιείται για να πάρει αντικείμενα χωρίς να το δημιουργήσει.
21) Τι είναι ο διακομιστής Hibernate;
Ένας διακομιστής μεσολάβησης αντικειμένου είναι απλώς ένας τρόπος για να αποφύγετε την ανάκτηση ενός αντικειμένου μέχρι να το χρειαστείτε. Το Hibernate 2 δεν εκτελεί proxy αντικειμένων από προεπιλογή.
22) Τι δημιουργείτε ένα SessionFactory;
Configuration cfg = new Configuration(); cfg.addResource("dir/hibernate.hbm.xml"); cfg.setProperties( System.getProperties() ); SessionFactory sessions = cfg.buildSessionFactory();
23) Τι είναι η HQL;
HQL σημαίνει Αδρανοποίηση γλώσσας ερωτημάτων. Η αδρανοποίηση επιτρέπει στο χρήστη να εκφράσει ερωτήματα στη φορητή επέκταση SQL, και αυτό ονομάζεται HQL. Επιτρέπει επίσης στον χρήστη να εκφραστεί σε εγγενή SQL.
24) Ποιοι είναι οι τύποι συλλογής στο Hibernate;
Σετ, Λίστα, Παράταξη, Χάρτης, Τσάντα είναι τύπος συλλογής στο Hibernate.
25) Τι είναι ο thin client;
Ένας thin client είναι μια διεπαφή προγράμματος με την εφαρμογή που δεν διαθέτει λειτουργίες όπως το ερώτημα των βάσεων δεδομένων, την εκτέλεση πολύπλοκων επιχειρηματικών κανόνων ή τη σύνδεση με παλαιού τύπου εφαρμογές.
26) Διακρίνετε τα αρχεία .ear, .jar και .war.
Αρχεία .jar: Αυτά τα αρχεία είναι με την επέκταση .jar. Τα αρχεία .jar περιέχουν τις βιβλιοθήκες, τους πόρους και τα αρχεία αξεσουάρ, όπως αρχεία ιδιοκτησίας.
Αρχεία .war: Αυτά τα αρχεία είναι με την επέκταση .war. Το αρχείο .war περιέχει JSP, HTML, javascript και άλλα αρχεία απαραίτητα για την ανάπτυξη διαδικτυακών εφαρμογών.
Αρχεία .ear: Το αρχείο .ear περιέχει τις μονάδες EJB της εφαρμογής.
27) Τι είναι η ετικέτα JSP;
Στο JSP οι ετικέτες μπορούν να χωριστούν σε τέσσερις διαφορετικούς τύπους.
- Οδηγιών
- Δηλώσεις
- Σενάρια
- Εκφράσεις
28) Πώς να αποκτήσω πρόσβαση στις παραμέτρους init web.xml από τη σελίδα JSP;
Για παράδειγμα, εάν έχετε:
Ταυτότητα αυτή είναι η αξία
Μπορείτε να αποκτήσετε πρόσβαση σε αυτήν την παράμετρο
Id: <h:outputText value="#{initParam['Id']}"/>
29) Τι είναι οι οδηγίες JSP;
- Οδηγίες 1.σελίδας <%@page language=”java” %>
- 2. περιλαμβάνει Οδηγίες: <%@ include file="/header.jsp" %>
- 3. taglib Οδηγίες <%@ taglib uri=”tlds/taglib.tld” prefix=”html” %>
30) Τι είναι το αρχείο EAR;
Ένα αρχείο EAR είναι ένα αρχείο JAR με επέκταση .ear. Μια εφαρμογή J2EE με όλες τις ενότητες της παραδίδεται σε αρχείο EAR.
31) Τι θα συμβεί όταν μεταγλωττίσετε και εκτελέσετε τον παρακάτω κώδικα;
public class MyClass { public static void main(String argv[]){ int array[]=new int[]{1,2,3}; System.out.println(array [1]); } } Answer: Compiled and shows output : 2
32) Τι είναι τα Struts;
Το πλαίσιο Struts είναι μια αρχιτεκτονική Model-View-Controller (MVC) για το σχεδιασμό εφαρμογών μεγάλης κλίμακας. Είναι ένας συνδυασμός Java Servlets, JSP, προσαρμοσμένων ετικετών και μηνυμάτων. Τα Struts σάς βοηθούν να δημιουργήσετε ένα επεκτάσιμο περιβάλλον ανάπτυξης για την εφαρμογή σας, με βάση δημοσιευμένα πρότυπα και αποδεδειγμένα μοτίβα σχεδίασης. Το μοντέλο σε πολλές εφαρμογές αντιπροσωπεύει την εσωτερική κατάσταση του συστήματος ως ένα σύνολο από ένα ή περισσότερα JavaBeans.The Προβολή πιο συχνά κατασκευάζεται χρησιμοποιώντας την τεχνολογία JavaServer Pages (JSP). Ο ελεγκτής εστιάζει στη λήψη αιτημάτων από τον πελάτη και στην παραγωγή της επόμενης φάσης της διεπαφής χρήστη σε ένα κατάλληλο στοιχείο Προβολής. Το κύριο στοιχείο του Controller στο πλαίσιο είναι ένα servlet της κλάσης ActionServlet.
Αυτό το servlet ρυθμίζεται ορίζοντας ένα σύνολο ActionMappings.
33) Τι είναι το ActionErrors;
Αντικείμενο ActionErrors που ενσωματώνει τυχόν σφάλματα επικύρωσης που έχουν βρεθεί. Εάν δεν εντοπιστούν σφάλματα, επιστρέψτε το null ή ένα αντικείμενο ActionErrors χωρίς ηχογραφημένα μηνύματα σφάλματος. Η προεπιλεγμένη υλοποίηση επιχειρεί να προωθήσει στην έκδοση HTTP αυτής της μεθόδου. Διατήρηση αντιστοίχισης παραμέτρων αιτήματος και αίτημα και επιστροφή συνόλου σφαλμάτων επικύρωσης, εάν η επικύρωση απέτυχε. ένα κενό σύνολο ή μηδενικό
34) Τι είναι το ActionForm;
Το ActionForm είναι ένα φασόλι Java που συσχετίζει ένα ή περισσότερα ActionMappings. Ένα φασόλι java γίνεται FormBean όταν επεκτείνεται η κλάση org.apache.struts.action.ActionForm. Το αντικείμενο ActionForm συμπληρώνεται αυτόματα στην πλευρά του διακομιστή στον οποίο τα δεδομένα έχουν εισαχθεί από τον πελάτη από τη διεπαφή χρήστη. Το ActionForm διατηρεί την κατάσταση περιόδου λειτουργίας για μια εφαρμογή web.
35) Τι είναι η χαρτογράφηση δράσης;
Στην αντιστοίχιση ενεργειών, καθορίζουμε κλάση ενεργειών για συγκεκριμένη διεύθυνση URL, π.χ. διαδρομή και διαφορετική προβολή στόχου, π.χ. προώθηση στην οποία θα προωθηθεί η απάντηση του αιτήματος. ActionMapping αντιπροσωπεύει τις πληροφορίες που το ActionServlet γνωρίζει για την αντιστοίχιση ενός συγκεκριμένου αιτήματος σε ένα παράδειγμα ενός συγκεκριμένου Ενέργειες τάξη. ο χαρτης μεταβιβάζεται στο εκτέλεση() μέθοδος του Ενέργειες τάξη, επιτρέποντας απευθείας πρόσβαση σε αυτές τις πληροφορίες.
36) Τι είναι το MVC σε αντηρίδες;
MVC βάση Model-View-Controller.
Μοντέλο: Το μοντέλο σε πολλές εφαρμογές αντιπροσωπεύει την εσωτερική κατάσταση του συστήματος ως ένα σύνολο από ένα ή περισσότερα JavaBeans.
Προβολή: Ο Προβολή πιο συχνά κατασκευάζεται χρησιμοποιώντας την τεχνολογία JavaServer Pages (JSP).
ελεγκτής: Ο ελεγκτής εστιάζει στη λήψη αιτημάτων από τον πελάτη και στην παραγωγή της επόμενης φάσης της διεπαφής χρήστη σε ένα κατάλληλο στοιχείο Προβολής. Το κύριο στοιχείο του Controller στο πλαίσιο είναι ένα servlet της κλάσης ActionServlet.
Αυτό το servlet ρυθμίζεται ορίζοντας ένα σύνολο ActionMappings.
37) Τι είναι οι διαφορετικές ενότητες την άνοιξη;
Υπάρχουν επτά βασικές ενότητες την άνοιξη
- Η μονάδα Core container
- Μονάδα χαρτογράφησης O/R (Αντικείμενο/Σχέση)
- Μονάδα DAO
- Μονάδα περιβάλλοντος εφαρμογής
- Προγραμματισμός με προσανατολισμό στις πτυχές
- Μονάδα Ιστού
- Μονάδα MVC
38) Τι είναι το Bean Factory, έχετε χρησιμοποιήσει το εργοστάσιο XMLBean;
XmlBeanFactory is one of the implementation of bean Factory org.springframework.beans.factory.xml.XmlBeanFactory is used to creat bean instance defined in our xml file. BeanFactory factory = new XmlBeanFactory(new FileInputStream("beans.xml")); Or ClassPathResource resorce = new ClassPathResource("beans.xml"); XmlBeanFactory factory = new XmlBeanFactory(resorce);
39) Τι είναι η Άνοιξη;
Το Spring είναι ένα ελαφρύ πλαίσιο ανοιχτού κώδικα για την ανάπτυξη εταιρικών εφαρμογών που επιλύει την πολυπλοκότητα της ανάπτυξης εταιρικών εφαρμογών, παρέχει επίσης ένα συνεκτικό πλαίσιο για την ανάπτυξη εφαρμογών J2EE που βασίζεται κυρίως στο μοτίβο σχεδίασης IOC (αναστροφή ελέγχου) ή DI (ένεση εξάρτησης). .
40) Ποια είναι η λειτουργικότητα του ActionServlet και του RequestProcessor;
- Λήψη του HttpServletRequest
- Συμπλήρωση JavaBean από τις παραμέτρους αιτήματος
- Εμφάνιση απάντησης στην ιστοσελίδα Θέματα
- Αντιμετώπιση προβλημάτων τύπου περιεχομένου
- Παρέχετε σημεία επέκτασης
41) Οι κλάσεις ActionServlet, RequestProcessor και Action είναι τα στοιχεία του
ελεγκτής
42) Ποιο είναι το προεπιλεγμένο εύρος την Άνοιξη;
Μοναδικό χαρτί.
43) Ποια είναι τα πλεονεκτήματα της χρήσης Spring;
- Ο προγραμματισμός που βασίζεται στο Pojo επιτρέπει την επαναχρησιμοποίηση του στοιχείου.
- Βελτιώστε την παραγωγικότητα και στη συνέχεια μειώστε το κόστος ανάπτυξης.
- Το Dependency Injection μπορεί να χρησιμοποιηθεί για τη βελτίωση της δοκιμασιμότητας.
- Η άνοιξη απαιτούσε εταιρικές υπηρεσίες χωρίς την ανάγκη του ακριβού διακομιστή εφαρμογών.
- Μειώνει τη σύζευξη στον κώδικα και βελτιώνει τη συντηρησιμότητα.
44) Ποια είναι τα οφέλη για την άνοιξη;
- Ελαφρύ δοχείο
- Η άνοιξη μπορεί να οργανώσει αποτελεσματικά τα αντικείμενα της μεσαίας βαθμίδας σας
- Η αρχικοποίηση των ιδιοτήτων είναι εύκολη. Δεν χρειάζεται να διαβάσετε από ένα αρχείο ιδιοτήτων
- Ο κωδικός εφαρμογής είναι πολύ πιο εύκολος στη δοκιμή μονάδας
- Τα αντικείμενα δημιουργούνται Lazily, Singleton – διαμόρφωση
- Οι υπηρεσίες διαχείρισης διαμόρφωσης του Spring μπορούν να χρησιμοποιηθούν σε οποιοδήποτε αρχιτεκτονικό επίπεδο, σε οποιοδήποτε περιβάλλον χρόνου εκτέλεσης
45) Διεπαφές κύκλου ζωής την άνοιξη;
1) InitializingBean <bean id="expInitBean" init-method="init"/> public class ExpBean { public void init() { // do some initialization code } } OR <bean id=" expInitBean "/> public class ExpBean implements InitializingBean { public void afterPropertiesSet() { // do some initialization code } } 2) DisposableBean <bean id="expInitBean" destroy-method="cleanup"/> public class ExpBean { public void cleanup() { // do some destruction code (like releasing pooled connections) } } OR <bean id="expInitBean"/> public class ExpBean implements DisposableBean { public void destroy() { // do some destruction code (like releasing pooled connections) } }
46) Πώς να δημιουργήσετε αντικείμενο χωρίς να χρησιμοποιήσετε τη λέξη-κλειδί "νέο" στη Java;
Χωρίς νέα, οι μέθοδοι Factory χρησιμοποιούνται για τη δημιουργία αντικειμένων για μια κλάση. Για παράδειγμα
Ημερολόγιο c=Calender.getInstance();
Εδώ το Calender είναι μια κλάση και η μέθοδος getInstance() είναι μια μέθοδος Factory που μπορεί να δημιουργήσει ένα αντικείμενο για την κλάση Calendar.
47) Τι είναι το servlet;
Τα Servlets είναι ένα στοιχείο διακομιστή που παρέχει έναν ισχυρό μηχανισμό για την ανάπτυξη προγραμμάτων από την πλευρά του διακομιστή. Οι Servlets είναι διακομιστής, καθώς και ανεξάρτητοι από πλατφόρμα και οι Servlets, έχουν σχεδιαστεί για διάφορα πρωτόκολλα. Τα πιο συχνά χρησιμοποιούμενα πρωτόκολλα HTTP. Οι Servlets χρησιμοποιούν τις κλάσεις στα πακέτα java javax.servlet, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, javax.servlet.http.HttpSession;. Όλοι οι servlets πρέπει να υλοποιούν τη διεπαφή Servlet, η οποία ορίζει μεθόδους κύκλου ζωής.
48) Το Servlet είναι καθαρό αντικείμενο java ή όχι;
Ναι, καθαρό αντικείμενο java.
49) Ποιες είναι οι φάσεις του κύκλου ζωής του servlet;
Ο κύκλος ζωής ενός servlet αποτελείται από τις ακόλουθες φάσεις:
- Φόρτωση κλάσης Servlet
- Instantiation Servlet
- η μέθοδος έναρξης
- Διαχείριση αιτημάτων (καλέστε τη μέθοδο εξυπηρέτησης)
- Αφαίρεση από την υπηρεσία (καλέστε τη μέθοδο καταστροφής)
50) Τι πρέπει να εφαρμοστεί από όλα τα Servlets;
Η διεπαφή Servlet πρέπει να υλοποιηθεί από όλους τους servlets
Αυτές οι ερωτήσεις συνέντευξης θα βοηθήσουν επίσης στο viva (προφορικά) σας
6) Ορίστε τον πίνακα Hash
Το HashTable είναι ακριβώς όπως ο χάρτης κατακερματισμού, η συλλογή που έχει ζεύγη κλειδιών (Μοναδική), τιμής. Το Hashtable είναι ένα συγχρονισμένο αντικείμενο συλλογής. Δεν επιτρέπει διπλότυπες τιμές "αλλά επιτρέπει μηδενικές τιμές".
Δηλώνει ότι επιτρέπει μηδενικές τιμές είναι λάθος, ο πίνακας Hash δεν εξαιρεί τα μηδενικά κλειδιά ούτε τις μηδενικές τιμές.
Διορθώθηκε το σφάλμα
ευχαριστώ…
Αυτά δεν είναι ακριβώς J2EE Qns. Αναμιγνύονται κάπως με μεγαλύτερη έμφαση στις τεχνολογίες Spring & Hibernate. Ίσως μπορείτε να εξετάσετε το ενδεχόμενο να μετονομάσετε τον τίτλο ή να προσθέσετε περισσότερα JEE Qns.
Είναι ένα χρήσιμο σεμινάριο