Σε αυτό το άρθρο, θα καλύψω τις πιο συνηθισμένες ερωτήσεις που μπορεί να συναντήσετε κατά τη διάρκεια μιας συνέντευξης JavaScript, παρέχοντας λεπτομερείς απαντήσεις και παραδείγματα που θα σας βοηθήσουν να ξεχωρίσετε από τον ανταγωνισμό. Είτε είστε αρχάριος είτε έμπειρος προγραμματιστής, αυτός ο οδηγός θα σας δώσει την αυτοπεποίθηση που χρειάζεστε για να εντυπωσιάσετε τον συνεντευκτή σας και να αποκτήσετε τη δουλειά.

1️⃣ Τι είναι η JavaScript και σε τι διαφέρει από την Java; 🤔

Η JavaScript και η Java είναι και οι δύο γλώσσες προγραμματισμού, αλλά χρησιμοποιούνται για διαφορετικούς σκοπούς και έχουν κάποιες βασικές διαφορές.

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

Το πρόγραμμα περιήγησης εκτελεί κώδικα JavaScript, ενώ ο κώδικας Java συνήθως μεταγλωττίζεται και εκτελείται σε μια εικονική μηχανή ή σε μια συγκεκριμένη συσκευή.

2️⃣ Ποια είναι η διαφορά μεταξύ let και var;

Τα var και let χρησιμοποιούνται για τη δήλωση μεταβλητών στο JavaScript, αλλά έχουν κάποιες βασικές διαφορές όσον αφορά την ανύψωση και το πεδίο εφαρμογής. Οι μεταβλητές var ανυψώνονται στην κορυφή του εύρους τους και είναι προσβάσιμες σε ολόκληρο το εύρος. Οι μεταβλητές let, από την άλλη πλευρά, είναι προσβάσιμες μόνο εντός του μπλοκ στο οποίο έχουν δηλωθεί και δεν ανυψώνονται

// var hoisting example
console.log(x); // undefined
var x = 5;
console.log(x); // 5

// let hoisting example
console.log(y); // ReferenceError: y is not defined
let y = 5;
console.log(y); // 5

3️⃣ Ποια είναι η διαφορά μεταξύ == και ===;

Τα == και === χρησιμοποιούνται για σύγκριση ισότητας στο JavaScript, αλλά συμπεριφέρονται διαφορετικά όσον αφορά τον καταναγκασμό τύπου. Το == συγκρίνει τιμές μετά τον τύπο εξαναγκασμού, ενώ το `=== συγκρίνει τιμές χωρίς τύπο εξαναγκασμού.

console.log(5 == "5"); // true
console.log(5 === "5"); // false

Συνιστάται γενικά η χρήση === στις περισσότερες περιπτώσεις για την αποφυγή απροσδόκητης συμπεριφοράς λόγω εξαναγκασμού τύπου.

4️⃣ Τι είναι το κλείσιμο σε JavaScript;

Το κλείσιμο στο JavaScript είναι μια συνάρτηση που έχει πρόσβαση στις μεταβλητές στο γονικό εύρος της, ακόμη και μετά την επιστροφή της γονικής συνάρτησης.

function outerFunction(x) {
  return function innerFunction() {
    console.log(x);
  }
}
let closureFunc = outerFunction(5);
closureFunc(); // 5

Σε αυτό το παράδειγμα, η innerFunction έχει πρόσβαση στη μεταβλητή x από το γονικό εύρος της, την outerFunction.

5️⃣ Ποια είναι η διαφορά μεταξύ κλήσης και αίτησης;

Και τα call και apply χρησιμοποιούνται για την κλήση μιας συνάρτησης και ορίζουν την τιμή this μέσα στη συνάρτηση, αλλά έχουν διαφορετικές συντακτικές. Το call παίρνει την τιμή this ως πρώτο όρισμα, ακολουθούμενο από τυχόν πρόσθετα ορίσματα για τη συνάρτηση.

let obj = {name: "John"};
function sayName() {
  console.log(this.name);
}
sayName.call(obj); // John

Το apply λαμβάνει επίσης την τιμή this ως πρώτο όρισμα, αλλά αναμένει ότι τα πρόσθετα ορίσματα για τη συνάρτηση θα μεταβιβαστούν ως πίνακας.

let obj = {name: "John"};
function sayName(age) {
  console.log(this.name + " is " + age + " years old.");
}
sayName.apply(obj, [30]); // John is 30 years old.

6️⃣ Τι είναι ένας βρόχος συμβάντων στο JavaScript;

Η JavaScript χρησιμοποιεί έναν βρόχο συμβάντων για να χειριστεί τη συγχρονικότητα και να χειριστεί συμβάντα καθώς συμβαίνουν. Ο βρόχος συμβάντος ελέγχει συνεχώς την ουρά μηνυμάτων και τη στοίβα κλήσεων. Όταν καλείται μια συνάρτηση, το it προστίθεται στη στοίβα κλήσεων και εκτελείται.

Εάν χρειάζεται να χειριστείτε οποιαδήποτε συμβάντα στην ουρά μηνυμάτων, προστίθενται στη στοίβα κλήσεων και εκτελούνται. Αυτό επιτρέπει στην JavaScript να διαχειρίζεται πολλά συμβάντα και να λειτουργεί ταυτόχρονα κλήσεις χωρίς να παγώνει το κύριο νήμα.

7️⃣ Ποια είναι η διαφορά μεταξύ σύγχρονου και ασύγχρονου κώδικα;

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

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

// synchronous code
console.log("Start");
let x = 0;
for (let i = 0; i < 1000000000; i++) {
  x += i;
}
console.log("End");

// asynchronous code using callbacks
console.log("Start");
let x = 0;
setTimeout(function() {
  for (let i = 0; i < 1000000000; i++) {
    x += i;
  }
  console.log("End");
}, 0);
console.log("Moving on...");

Στο ασύγχρονο παράδειγμα, ο βρόχος for εκτελείται μετά την καταγραφή του μηνύματος "Moving on…", επιτρέποντας σε άλλον κώδικα να συνεχίσει την εκτέλεση.

Έχετε φτάσει στο τέλος αυτού του οδηγού και είστε πλέον καλά εξοπλισμένοι με τις γνώσεις και τα εργαλεία απαραίτητα για την επόμενη συνέντευξη JavaScript. Θυμηθείτε να εξασκηθείτε, να μείνετε ενημερωμένοι με τις πιο πρόσφατες δυνατότητες και τις βέλτιστες πρακτικές και, το πιο σημαντικό, να είστε σίγουροι. Πιστεύω σε εσάς και ξέρω ότι θα αποκλείσετε τη συνέντευξή σας. Καλή τύχη! 🍀

🌎 Ας Συνδεθούμε!

Περισσότερο περιεχόμενο στο PlainEnglish.io. Εγγραφείτε στο δωρεάν εβδομαδιαίο ενημερωτικό δελτίο μας. Ακολουθήστε μας στο Twitter, LinkedIn, YouTube και Discord .

Ενδιαφέρεστε να κλιμακώσετε την εκκίνηση του λογισμικού σας; Ρίξτε μια ματιά στο Circuit.