Координировался в Ханчжоу, закончил 18 лет, в том числе полтора года опыта разработки в стажировке. Это было интервью иностранца, с обеих сторон были интервьюеры Али.
Изначально мне прислали онлайн-оценку, но там возникла проблема с сервером, и я не мог открыть веб-страницу, поэтому мне пришлось задавать вопросы по телефону. Большинство вопросов, которые я пишу ниже, — это вопросы из оценки, а некоторые — недавно добавленные вопросы по телефону. . .
Старайтесь использовать как можно больше способов добиться вертикального и горизонтального центрирования дочерних элементов.
var x = 3;
var foo = {
x: 2,
baz: {
x: 1,
bar: function() {
return this.x;
}
}
}
var go = foo.baz.bar;
console.log(go()); // 3
console.log(foo.baz.bar()); // 1
Этот вопрос основан на направлении этого:
это предоставляется вызывающей стороной и определяется тем, как вызывается функция. Если это функция, вызываемая объектом, this указывает на объект, напримерfoo.baz.bar(). Если функция вызывается независимо, например.go(), то this внутри функции указывает на undefined. Но в нестрогом режиме он будет автоматически указывать на окно глобального объекта.
Реализуйте следующую функцию, чтобы вывести входную строку в обратном порядке.
function reverse(str) {
let res = str.split('');
return res.reverse().join('');
}
reverse('hello world!'); // output: '!dlrow olleh'
Я чувствую, что это очень хороший вопрос, и интервьюер всегда руководил моим мышлением в процессе ответа.Например, в начале я думал об использовании DOM, чтобы судить, является ли узел отношением вышестоящего-подчиненного.contains()метод, а затем интервьюер рассматривает производительность, желательно с использованием собственного API. Затем я говорю использовать parentNode. я проверил позжеMDN,ОбнаружитьcontainsЭтот метод является собственным API, который поддерживается IE5 и более поздними версиями:Но дело не в этом, дело в том, что этот сценарий не может быть достигнут с помощью метода contains, потому что вам нужно знать родительский узел (верхний узел). Но эта сцена ищет узел, зная дочерний узел (цель, возвращаемая событием щелчка).
Когда я говорил об использовании набора данных для получения пользовательских атрибутов, интервьюер сказал, что, учитывая совместимость, есть ли другой способ. Я отвечаюgetAttribute().
Когда я говорил о том, как находить узлы слой за слоем, я сначала подумал о рекурсивном вызове функций, но интервьюер тут же прервал меня и сказал, что это ненужно и приводит к потере производительности. Потом мне подсказали, что есть способ зациклиться. Наконец подумал о том, пока
другие проблемы
Каковы методы массивов ES6
Какие инструменты управления состоянием использовались в React, а затем разница между REDUX и MOBX, и интервью встречалось три или четыре раза, поэтому оно резюмирует:
1. Redux поощряет использование приложением только одного Магазина, а Mobx поощряет использование нескольких Магазинов;
2. Redux — это функциональное программирование, а модель Mobx — объектно-ориентированная;
3. Redux использует данные «вытягивающим» способом, что согласуется с React, но Mobx использует данные «выталкивающим» способом;
4. Redux поощряет нормализацию данных и уменьшает избыточность Mobx допускает избыточность данных, но также обеспечивает согласованность данных.
5. Redux более строг, и для запуска действий по изменению состояния необходимо вызывать редюсер.Одним из первоначальных преимуществ Mobx является прямое изменение данных, но на практике все по-прежнему считают, что быть неорганизованным и недисциплинированным нехорошо. , поэтому Mobx по-прежнему предоставляет концепцию действия. В отличие от действия Redux, действие в Mobx на самом деле является функцией, и его не нужно отправлять. Если вы хотите принудительно использовать действия и запретить прямое изменение наблюдаемых данных, используйте настройку Mobx следующим образом:
import {configure} from 'mobx';
configure({enforceActions: true});
Давайте поговорим о виртуальном DOM реакции и кратко поговорим о принципе работы алгоритма diff.