zoukankan      html  css  js  c++  java
  • 面试题

    angular双向绑定原理

    dirty check。简单来说就是给每个需要绑定的元素加个watcher,缓存下oldValue,然后定时遍历所有的watcher,比较newValue和oldValue,如果变化了做更新操作。

    数据类型

    null,undefined,boolean,string,number,object

    基本类型:string, number, boolean

    引用类型:object (array,function,)

    注意:type of null 是object,null是空对象,null == undefined 为true,null === undefined 为false

    js重载

    https://www.cnblogs.com/yugege/p/5539020.html

    内存泄漏问题

    html与xhtml区别

    HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言,看起来与HTML有些相象,只有一些小的但重要的区别,XHTML就是一个扮演着类似HTML的角色的XML,所以,本质上说,XHTML是一个过渡技术,结合了XML(有几分)的强大功能及HTML(大多数)的简单特性。

    HTML 和 XHTML 的区别简单来说,XHTML 可以认为是 XML 版本的 HTML,为符合 XML 要求,XHTML 语法上要求更严谨些。

    以下是 XHTML 相对 HTML 的几大区别:

    XHTML 要求正确嵌套

    XHTML 所有元素必须关闭

    XHTML 区分大小写

    XHTML 属性值要用双引号

    XHTML 用 id 属性代替 name 属性

    XHTML 特殊字符的处理

    HTML 的语义化理解

    1,去掉或者丢失样式的时候能够让页面呈现出清晰的结构

    2,有利于SEO:和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重;

    3,方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;

    4,便于团队开发和维护,语义化更具可读性,是下一步吧网页的重要动向,遵循W3C标准的团队都遵循这个标准,可以减少差异化。

    CSS 动画性能比较问题

    CSS3的动画的优点:
      1.在性能上会稍微好一些,浏览器会对CSS3的动画做一些优化(比如专门新建一个图层用来跑动画)
      2.代码相对简单
      但其缺点也很明显:
      1.在动画控制上不够灵活
      2.兼容性不好
      3.部分动画功能无法实现(如滚动动画,视差滚动等)
      JavaScript的动画正好弥补了这两个缺点,控制能力很强,可以单帧的控制、变换,同时写得好完全可以兼容IE6,并且功能强大。但想想CSS动画的transform矩阵是C++级的计算,必然要比javascript级的计算要快。另外对库的依赖也是一个很让人头疼的问题。
      所以,对于一些复杂控制的动画,使用javascript会比较靠谱。而在实现一些小的交互动效的时候,就多考虑考虑CSS吧。
    • 如何实现一个性能优化后的 slider
    • react 的 key 的作用以及实现原理,并设定一个具体情境进行分析
    • import React, { Component } from 'react';
      // import styles from '../leftMenu.css';
      
      export default class oItem extends Component {
        render() {
          const box = this.props.val.map((item) => {
            return (
              <li key={item}>
                <a href="/directory/game/LOL" title="英雄联盟" data-tid="1">{item}</a>
              </li>
            );
          });
          return <div>{box}</div>;
        }
      }

      react利用key来识别组件,它是一种身份标识标识,就像我们的身份证用来辨识一个人一样。每个key对应一个组件,相同的key react认为是同一个组件,这样后续相同的key对应组件都不会被创建。

    • 这样,有了key属性后,就可以与组件建立了一种对应关系,react根据key来决定是销毁重新创建组件还是更新组件。

      • key相同,若组件属性有所变化,则react只更新组件对应的属性;没有变化则不更新。

      • key值不同,则react先销毁该组件(有状态组件的componentWillUnmount会执行),然后重新创建该组件(有状态组件的constructorcomponentWillUnmount都会执行)

      另外需要指明的是:key不是用来提升react的性能的,不过用好key对性能是有帮组的。

    • JS 的基本函数式使用,比如 reduce、curry
    • var sum = arr.reduce(function(p, c) {
      console.log('p=' + p + '/c=' + c);
      return p + c;
      }, 10);

    • 高阶函数(high-order function), 高阶函数是指操作函数的函数,它接收一个或者多个函数作为参数,并返回一个新函数。此外,还依赖与闭包的特性,来保存中间过程中输入的参数。即:

      • 函数可以作为参数传递
      • 函数能够作为函数的返回值
      • 闭包
      • Array.prototype.push.apply(a,b)合并数组
    • curry https://www.cnblogs.com/zztt/p/4142891.html
    • 实现深拷贝
    •    function deepClone(data){
             var type = getType(data);
             var obj;
             if(type === 'array'){
                 obj = [];
             } else if(type === 'object'){
                 obj = {};
             } else {
                 //不再具有下一层次
                 return data;
             }
             if(type === 'array'){
                 for(var i = 0, len = data.length; i < len; i++){
                     obj.push(deepClone(data[i]));
                 }
             } else if(type === 'object'){
                 for(var key in data){
                     obj[key] = deepClone(data[key]);
                 }
             }
             return obj;
         }

      event-loop 和 macro-task、micro-task 的理解与应用举例 https://blog.csdn.net/sjn0503/article/details/76087631

    • 前端安全
    • 1xss
    • 2https与http 

      http是HTTP协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。

      https是HTTP运行在SSL/TLS之上,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。此外客户端可以验证服务器端的身份,如果配置了客户端验证,服务器方也可以验证客户端的身份。
      HTTPS缺省工作在TCP协议443端口,它的工作流程一般如以下方式:

      1) 完成TCP三次同步握手
      2) 客户端验证服务器数字证书,通过,进入步骤3
      3) DH算法协商对称加密算法的密钥、hash算法的密钥
      4) SSL安全加密隧道协商完成
      5)网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改

       

      XMLHttpRequest

      一个XMLHttpRequest需要设置两个事件回调函数,一个用于获取数据成功时调用,另一个用于获取数据失败时调用,以及一个open()方法调用及一个send()方法调用。

      function reqListener(){
          var data=JSON.parse(this.responseText);
          console.log(data);
      }
      function reqError(err){
          console.log("Fetch错误:"+err);
      }
      var oReq=new XMLHttpRequest();
      oReq.onload=reqListener;
      oReq.onerror=reqError;
      oReq.open("get","/students.json",true);
      oReq.send();

      call,apply

      apply,call是直接执行函数调用,bind是绑定,执行需要再次调用.apply和call的区别是apply接受数组作为参数,而call是接受逗号分隔的无限多个参数列表

      function Person() {
          }
          Person.prototype.sayName = function(p1,p2) { 
             alert(p1+p2); 
          }
      
          var obj = {name: 'michaelqin'}; // 注意这是一个普通对象,它不是Person的实例
          
          Person.prototype.sayName.apply(obj, ['a', 'b', 'c']);//ab
      
          
          Person.prototype.sayName.call(obj, 'a', 'b', 'c');//ab
      
          
          var sn = Person.prototype.sayName.bind(obj);
          sn(['a']); // aundefined
          sn('a'); // aundefined
      
      

  • 相关阅读:
    office(Word、Excel、PPT等图标异常和桌面无新建解决方案)
    CentOS7安装搭建.Net Core 2.0环境-详细步骤
    Win7系统system进程句柄数一直增加解决方案
    安装.Net Framework 4.6.2时出现“无法建立到信任根颁发机构的证书链”解决方法
    css关于定位那些事情
    1份2015计划书
    js关于弹也遮罩层
    每日一句(2014-10-23)
    每日一句(2014-10-17)
    每日一句(2014-10-16)
  • 原文地址:https://www.cnblogs.com/afterwawa/p/8688233.html
Copyright © 2011-2022 走看看