Сводка Tencent side-web-front-end-2018.4.11

Node.js внешний интерфейс JavaScript Тенсент

Общее ощущение, которое вы у меня вызвали после интервью, требует от вас овладения не только широтой, но и глубиной. Я не задавал много вопросов о интервью, которые я подготовил для плохой улицы.Может, мне еще чего-то не хватает, продолжайте учиться, продолжать совершенствоваться и дать себе откусить, подраться!!!

Обобщите воспоминания о вопросах, заданных интервьюером, следующим образом:

Вопросы о фреймах

Какие фреймворки использовались, я чувствую, что им нужно не только уметь их использовать, но и уделять больше внимания глубине понимания, например, пониманию исходного кода, идее алгоритма diff в реакции, пониманию принципы и возможность оптимизировать и улучшить производительность, такой уровень, кажется, они хотят.

Как запустить службу http в узле

Я не ответил на это, и я вдруг забыл.Я немного изучил node.js раньше, и я помню только, какие модули были введены, но я никак не могу вспомнить, как это реализовать. Ссылаться наблог, создайте простейший http-сервер следующим образом:

// 引入内置http模块
var http = require('http');

// 创建一个简单服务器,访问http://127.0.0.1:1337/,显示Hello World
http.createServer(function(req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

Каковы методы реализации анимации CSS3, напишите div для перемещения на 300 пикселей в течение 1 с

В то время я только ответил, что есть два способа анимации перехода и анимации, анимация перехода определяет только начальное и конечное состояния, а анимация анимации может быть установлена ​​покадрово. Затем интервьюер попросил меня переместить блок div на 300 пикселей за 1 с. Я не могу вспомнить, как именно это написать. Я до сих пор виню себя за то, что не умею писать произвольно.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style type="text/css">
        /* transition属性动画结合transform变化属性,实现元素移动一段距离的动画 */
        #transitonDiv:hover {
            transition: all 1s ease-in-out;
            -webkit-transition: all 1s ease-in-out;
            -moz-transition: all 1s ease-in-out;
            -o-transition: all 1s ease-in-out;

            transform: translateX(300px);
            -ms-transform: translateX(300px);
            -moz-transform: translateX(300px);
            -webkit-transform: translateX(300px);
            -o-transform: translateX(300px);
        }

        /* 通过animation属性,实现逐帧动画 */
        #animationDiv:hover {
            animation: animName 1s ease-in-out;
            -webkit-animation: animName 1s ease-in-out;
            -moz-animation: animName 1s ease-in-out;
            -o-animation: animName 1s ease-in-out;
        }
        
        /* 定义关键帧 */
        @keyframes animName {
            0% {
                transform: translateX(0px);
            }
            30% {
                transform: translateX(100px);
            }
            60% {
                transform: translateX(200px);
            }
            100% {
                transform: translateX(300px);
            }
        }
    </style>
</head>
<body>
    <div id="transitonDiv" style="width:40px;height:40px;background-color:red;"></div>
    <div id="animationDiv" style="width:40px;height:40px;background-color:green;"></div>
</body>
</html>

Процесс разрешения DNS? Как найти в DNS новое примененное доменное имя?

Справочный блог DNS-запросов на стороне сервераПодробное объяснение процесса разрешения DNS.

DNS — это протокол прикладного уровня, фактически он работает с другими протоколами прикладного уровня, включая, помимо прочего, HTTP, SMTP и FTP, для преобразования имен хостов, предоставленных пользователями, в IP-адреса.

Конкретный процесс выглядит следующим образом:

(1) Кэш браузера: когда пользователь получает доступ к доменному имени через браузер, браузер сначала проверяет, есть ли IP-адрес, соответствующий доменному имени, в его собственном кеше (если доменное имя было посещено и кеш не был очищен, он существует). );

(2) Системный кеш: когда в кеше браузера нет IP-адреса, соответствующего доменному имени, он автоматически проверяет, есть ли IP-адрес, соответствующий доменному имени, в кеше DNS файла Hosts компьютерной системы пользователя;

(3) Кэш маршрутизатора: когда в браузере и системном кеше нет IP-адреса, соответствующего доменному имени, введите кеш маршрутизатора для проверки, три вышеуказанных шага - это кеш DNS клиента;

(4) DNS-кэш провайдера (интернет-провайдера): когда IP-адрес, соответствующий доменному имени, не может быть найден на стороне обслуживания клиентов, он войдет в DNS-кэш интернет-провайдера для запроса. Например, если вы используете телекоммуникационную сеть, вы войдете в кэш-сервер телекоммуникационного DNS для поиска; (или запросите локальный DNS, указанный в настройках сети, если DNS указан на ПК, если нет настройки, такой как DNS динамическое получение, а затем инициировать запрос запроса к DNS провайдера)

(5) Сервер имен корневого домена: если ничего из вышеперечисленного не выполнено, введите корневой сервер для запроса. В мире существует только 13 корневых серверов доменных имен, 1 первичный корневой сервер доменных имен, а остальные 12 являются вторичными корневыми серверами доменных имен. После того, как корневое доменное имя получит запрос, оно проверит запись файла зоны, если нет, сообщит локальному DNS-серверу IP-адрес сервера доменного имени верхнего уровня (например, .com) в пределах своей юрисдикции;

(6) Сервер доменных имен верхнего уровня: сервер доменных имен верхнего уровня проверяет запись файла зоны после получения запроса и, если таковой нет, сообщает локальному DNS-серверу IP-адрес основного сервера доменных имен в пределах его юрисдикции;

(7) Основной сервер доменных имен: основной сервер доменных имен запрашивает собственный кеш после получения запроса, если нет, то он заходит на сервер доменных имен следующего уровня для поиска, и повторяет этот шаг до тех пор, пока не будет найдена правильная запись;

(8) Сохраните результат в кеш: локальный сервер доменных имен сохраняет возвращенный результат в кэше для следующего использования и возвращает результат клиенту, а клиент устанавливает связь с веб-сервером через этот IP-адрес.

Статус запроса Ajax и его значение

При написании AJax в javascript наиболее важным шагом является установка прослушивателя для объекта XMLHttpRequest, то есть использование метода «onreadystatechange». При мониторинге необходимо судить о статусе запроса объекта XMLHttpRequest.Обычно оценивается, что значение readyState равно 4, а значение статуса возврата http равно 200 или 304 для выполнения нужной нам операции.

Свойство readyState представляет текущее состояние запроса Ajax.

0 代表未初始化。 还没有调用 open 方法
1 代表正在加载。 open 方法已被调用,但 send 方法还没有被调用
2 代表已加载完毕。send 已被调用。请求已经开始
3 代表交互中。服务器正在发送响应
4 代表完成。响应发送完毕

операция cookie, чтение и запись

Смущенный. . . Файлы cookie никогда не подвергались манипуляциям.

Справочный блогПодробное объяснение работы куки в JS.

(function(){
 var cookieObj = {
    //修改或是添加cookie
   'add': function(name, value, hours) { 
        var expire = "";
        if(hours != null){
            expire = new Date((new Date()).getTime() + hours * 3600000);
            expire = "; expires=" + expire.toGMTString();
        }    
    document.cookie = name + "=" + escape(value) + expire + ";path=/";
    
    //如果指定域名可以使用如下
    //document.cookie = name + "=" + escape(value) + expire + ";path=/;domain=findme.wang";
   },
   
   //读取cookie
   'get': function(c_name){
        if (document.cookie.length>0) {
            c_start = document.cookie.indexOf(c_name + "=");
            if (c_start != -1) { 
                c_start=c_start + c_name.length+1;
                c_end=document.cookie.indexOf(";",c_start);
                if (c_end == -1) {
                    c_end = document.cookie.length;
                }
                return unescape(document.cookie.substring(c_start,c_end));
            } 
        }
        return "";
   }
 };
 window.cookieObj=cookieObj;
}());

Результат оказался неожиданно крутым. Продолжай кормить себя грудью, борись!!!