171 votes

À quelles questions un programmeur JavaScript devrait-il être capable de répondre?

Supposons qu'une entreprise embauche des codeurs JavaScript. Je me demande quelle question cette société devrait utiliser pour les évaluer correctement. Même si les compétences générales en programmation sont plus importantes que les spécificités technologiques, elles doivent être testées sur ce qu'elles vont utiliser.

Comment feriez-vous cela? Comment testeriez-vous s'ils ont les bonnes connaissances?

254voto

meder Points 81864

Générique

  • Utilisez-vous des bibliothèques? Si oui, lesquels et pourquoi l'aimez-vous?
  • Avez-vous écrit des bibliothèques de vous-même, comme DOM aides?
  • Utilisez-vous des JavaScript côté serveur cadres?
  • Quelle est la différence entre ECMAScript et JavaScript?
  • Utilisez-vous des validateurs de code JavaScript?
  • Qui JavaScript livres avez-vous lu/recommander?
  • Avez-vous de l'unité de tester votre code JavaScript?

(Débutant/Moyen) des questions spécifiques

  • Pourquoi presque tous les objets ont un toString méthode?
  • Savez-vous qui interprète Mozilla Firefox utilise? Ou de toutes autres navigateurs?
  • N'prise en charge de JavaScript lambda fonctions?
  • Ce qui est le plus utile de la fonction JavaScript que vous avez créé/utilisation?
  • Est-il bloquer le champ d'application en JavaScript?
  • Pouvez-vous expliquer comment, d'Ajax et XMLHttpRequest œuvres?
  • N'prise en charge de JavaScript classique héritage?
  • Pouvez-vous me donner un extrait de code qui utilise l' with déclaration?
  • Savez-vous ce que Greasemonkey est? Avez-vous utilisé?
  • Pensez-vous innerHTML est le mal?
  • Qu'est-ce que JSON?

Avancé questions

  • Pouvez-vous me donner un exemple d'un générateur?
  • Comment JSONP travail?
  • Un exemple de pattern singleton?
  • Quelle est la différence entre indéfini et non déclarées?
  • Avez-vous fait des animations à l'aide de Raphaël ou de l'élément canvas?
  • Êtes-vous familier avec le Web des Travailleurs?
  • Faites-vous tout de profilage? Quels outils utilisez-vous?
  • Avez-vous lu la nouvelle spécification ECMAScript? Ce que de nouvelles fonctionnalités sont là?

Des questions de personnes

  • Qui a écrit au départ ECMAScript? Savez-vous où il travaille et son titre?
  • Quel est le nom de ce gars qui a écrit jQuery?
  • Qui a écrit JSLint?

Croix-navigateur/API DOM questions

  • La norme addEventListener est pris en charge dans les navigateurs qui?
  • Les navigateurs qui incorrectement mis en œuvre getElementByID tels qu'ils renvoient également des éléments dont l'attribut name est la carte d'identité?

Extrait de Code questions

[1]:

<a href="#">text</a><br><a href="#">link</a>
<script>
    var as = document.getElementsByTagName('a');
    for ( var i = as.length; i--; ) {
        as[i].onclick = function() {
            alert(i);
            return false;
        }
    }
</script>

Pourquoi les ancres, lorsque l'on clique dessus, alerte - -1 , au lieu de leur compteur respectif à l'intérieur de la boucle? Comment pouvez-vous corriger le code de sorte qu'il n'alerte le bon numéro? (Astuce: des fermetures)

[2]

function User(name) {
    this.name = name;
};

var j = User('Jack');
alert(j.name)

Pourquoi ce code ne fonctionne pas comme prévu? Est quelque chose qui manque?

[3]:

Object.prototype.jack = {};

var a = [1,2,3];

for ( var number in a ) {
    alert( number )
}

Je suis une itération à travers ce tableau que j'ai défini, il y a 3 éléments dans.. les chiffres 1 2 et 3.. Pourquoi sur la terre est prise en montrant?

[4]:

people = {
    1:'Jack',
    2:'Chloe',
    3:'Bruce',
}

for ( var person in people ) {
    alert( person )
}

Pourquoi est-ce la ne fonctionne pas dans Internet Explorer?

[5]

<script>
    (function() {
        var jack = 'Jack';
    })();
    alert(typeof jack)
</script>

Pourquoi est-il alerte indéfini lorsque j'ai déclaré la jack variable à "Jack"?

[6]:

<script src="file.js">alert(2);</script>

Pourquoi n'est-il pas alerter les 2?

[7]:

array = [1,2]; alert( typeof array )

Pourquoi me dit - object et pas de tableau? Comment détecter si son un tableau?

[8]:

<a id="clickme">click me!</a>
<script>
    var a = document.getElementById('clickme');
    a.onclick = function() {
        alert(this.innerHTML)
        setTimeout( function() {
            alert( this.innerHTML );
        }, 1000);
    };
</script>

Pourquoi la deuxième alerte-dire undefined?

[9]:

<p id="test">original</p>
<script>
    var test = document.getElementById('test');
    test.innerHTML.replace('original', 'FOOBAR');
</script>

Comment se fait-il ne remplace pas le texte avec FOOBAR??

[10]:

function identity() {
    var name = 'Jack';
    alert(name);
    return
    name
};
var who = identity();
alert(who)

Pourquoi est-il le premier d'alerte Jack, alors pas défini?

[11]:

var number = '08',
    parsed = parseInt(number);

alert(parsed)

L'alerte devrait me donner 8.. pourquoi ne pas me donner 8?

[12]:

<script>
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "http://www.google.com", true);
    xhr.onreadystatechange = function(){
        if ( xhr.readyState == 4 ) {
            if ( xhr.status == 200 ) {
                alert( xhr.responseText )
            } else {
                document.body.innerHTML = "ERROR";
            }
        }
    };
    xhr.send(null);
</script>

Comment ne puis-je pas récupérer Google de la page d'accueil de texte avec XHR[6] à partir de mon localhost?

[13]:

<script>
    var ticket = true;

    if (!ticket)
        alert('you need a ticket');
        alert('please purchase a ticket.')
</script>

ticket est définie sur true. Pourquoi est-il d'alerte que j'ai besoin d'en acheter un?

[14]:

<script>
    var blogEntry = 'Today I woke up
        to the smell of fresh coffee';

    alert(blogEntry)
</script>

Comment se fait-il n'a pas d'alerte avec l'entrée de blog? Tout me semble bon.

[15]:

alert( [typeof 'hi' === 'string', typeof new String('hi') === 'string' ]  )

J'ai deux chaînes, mais la deuxième évaluation ne devient pas vrai. Est-ce un bug potentiel? Comment se fait-il pas vrai?

Les meilleures pratiques

<a href="#" onclick="javascript:window.open('about.html');">about</a>

Voulez-vous changer quelque chose dans le code précédent exemple? Pourquoi?

<a href="site.html" onmouseover="changeImages('button1', 'images/button1over.png'); return true;" onmouseout="changeImages('button1', 'images/button1.png'); return true;">site</a>

Voulez-vous changer quelque chose dans cet exemple? Pourquoi?

25voto

Justin Johnson Points 16243

Meder a quelques bons points. Voici un peu plus de

  • Comment créer des variables statiques à l'intérieur d'une fonction
  • Quelle est la portée de la chaîne d'
  • Donné un nom de classe comme une chaîne de caractères, comment instancier un objet à partir d'elle
  • Quelles sont closuers et comment ils interagissent avec le champ d'application
  • Qu'est-ce que nourrissage et comment avez-vous le faire en JavaScript
  • Quelles sont anonymes/lambda fonctions
  • Qu'est ce qu'un "live" conteneur?
  • Quelle est l'importance de l' var mot-clé
  • Comment déboguer votre code JavaScript

Quel est le problème avec le code suivant?

var allDivs = document.getElementsByTagName("div");

for ( var i = 0; i<allDivs.length; i++ ) {
    allDivs[i].appendChild(document.createElement("div"));
}

Réponse: boucle infinie en raison du fait que getElementsByTagName (et similaires) retourne un HTMLCollection, ce qui est un "live" de définir ou de conteneur, ce qui signifie que chaque fois que vous ajoutez un div pour le document, il est ajouté à l' allDivs.

16voto

James Black Points 26183

Si vous êtes à la recherche pour certains des développeurs avancés puis leur poser des questions qui pourraient conduire à la compréhension de la façon dont ils utilisent des fermetures serait utile.

Par exemple, si vous avez une boucle for et vous voulez imprimer la valeur dans un setTimeout, à une alerte, comment le feriez-vous?

Mise à JOUR: Je pensais à propos de javascript, et les web workers et comment les utiliser de la toile de croix-navigateur situations, c'est sympa, mais probablement pas beaucoup utilisée. Je pense que l'une des choses les plus importantes serait de voir comment ils traitent avec des problèmes de navigateur. Par exemple, comment utiliser le Tableau.filtre cross-browser, depuis IE ne comprend pas cette fonction?

Ce serait de vérifier sur la façon de déterminer si une fonction est prise en charge.

Vous pourriez aussi vous demander comment obtenir de l'élément cible, si:

var elem = document.createElement('a');
a.onclick = function(e) {
// how to display the href of this element clicked on
}

Ce serait montrer qu'ils ont une certaine compréhension de la façon dont les différents navigateurs gérer quelque chose d'aussi fondamental.

jQuery résumés, mais il y aura des moments où vous avez à faire quelque chose de similaire, et vous ne pouvez pas dépendre de la bibliothèque de tout faire pour vous, vous devriez donc avoir une certaine compréhension de ce problème.

11voto

monksy Points 8788

Je vous suggère fortement de questions sur le code de débogage et de traiter avec des "sans type d'objets". Aussi d'autres bonnes questions allusion à la diversité des interprétations du code entre navigateur. Vous pouvez poser des questions relatives à la définition comme matière de remplissage, cependant ils n'ont pas vraiment donner une bonne mesure de la qualité de développeur.

Une autre bonne question à se poser est de scénario en fonction des questions. Ceux-ci ont tendance à se débarrasser de personnes avec une faible compréhension d'un sujet sur les examens de certification.

J'ai eu des questions sur la demande des fichiers à partir du côté client. J'ai une forte désapprobation de ce type de question, car il est douteux sur les utilisateurs secondaires.

Aussi loin que les cadres aller... je ne pense vraiment pas que des questions détaillées sont nécessaires, à moins que c'est dans leur titre d'emploi (c'est à dire la Haute Développeur JQuery). Aussi longtemps que le développeur sait officiellement comment développer/design avec Javascript alors qu'il peut apprendre un cadre relativement rapidement et de produire des résultats bons à excellents.

7voto

Daniel Pryden Points 22167

D'autres réponses sont bonnes ici. Je recommande également de certains généraux exercice de programmation à l'aide de JavaScript, par exemple en faisant un FizzBuzz mise en œuvre. JavaScript est surtout à propos de tordre le code qui s'exécute dans le navigateur, mais être en mesure de traduire un algorithme en code est une compétence importante pour tout travail de programmeur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X