面试1

1.块级元素怎么样垂直水平居中?

     (1)父元素position:relative,子元素position:absolute;top:50%;left:50%;margin-top:-height/2;margin-left:-width/2;

   (2)父元素样式属性display:flex;子元素使用margin:auto。这种方式在子块级元素宽高不确定的时候(宽高会自适应为其里面内容的宽高)依然可以使用

   (3)使用css3样式属性transform,transform中translate偏移的百分比值是相对于自身大小的

     ( 4 ).已知子元素的宽和高,设置其样式属性position:absolute;top:0;left:0;bottom:0;right:0;margin:auto;

2.什么是闭包?  

  闭包:即重用一个变量,又保护变量不被污染的一种机制。

为什么使用闭包 : 全局变量和局部变量都具有不可兼得的优缺点。

   全局变量:  优: 可重用, 缺: 易被污染。

   局部变量:  优: 仅函数内可用,不会被污染。缺: 不可重用!

 何时使用: 只要即重用一个变量,又保护变量不被污染时。

 如何: 3步:

   1. 用外层函数包裹要保护的变量和内层函数。

   2. 外层函数将内层函数返回到外部。

   3. 调用外层函数,获得内层函数的对象,保存在外部的变量中——形成了闭包。  

 闭包形成的原因: 外层函数调用后,外层函数的函数作用域(AO)对象无法释放,被内层函数引用着。

 闭包的缺点:

   比普通函数占用更多的内存。

   解决:闭包不在使用时,要及时释放。

   将引用内层函数对象的变量赋值为null。

3.什么是递归?

  所谓递归,简单点来说,就是一个函数直接或间接调用自身的一种方法,

  递归与循环的区别  :简单来说,循环是有去无回,而递归则是有去有回(因为存在终止条件)

4.es6的了解?

  (1)   let 跟const :  都是块级作用域,const 是只读常量,不可重新赋值

  (2)  箭头函数   :出现的作用除了让函数的书写变得很简洁,可读性很好外;最大的优点是解决了this执行环境所造成的一些问题。

    历史:箭头函数(arrow function),就是C#中的lambda表达式,据说Java8也把它加入了豪华午餐。但不管怎样,JS正在从其它语言吸纳优秀的特性(比如yield, class, 默认参数等等),且不论这些特性好坏,这件事本身就是极好的(至少我们正在使用的是一个充满活力的工具)

  (3)  解构赋值

  (4) 模板字符串

  (5)  import 跟 export   : import 是引入  ,export 是导出

  (6)  class

  (7) 扩展运算符

  (8)  promise  :  慨念和作用:promise 是异步编程的解决方案,将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。将复杂的回调函数变为链式调用。解决回调地狱。

    原理:

    1 .一个promise的当前状态只能是pendingfulfilledrejected三种之一。状态改变只能是pendingfulfilled或者pendingrejected。状态改变不可逆。
    2. promisethen方法接收两个可选参数,表示该promise状态改变时的回调

5  如何在谷歌浏览器中显示12px 一下的字体?
  (1) 可以使用Webkit 的内核的 -webkit-text-size-adjust 的私有 CSS 属性来解决,

     加了 -webkit-text-size-adjust:none; 字体大小 就不受限制了。

           注意:但是,在chrome更新到27版本之后就不可以用了。

  (2) 使用-webkit-transform: scale(0.5); 

    注意-webkit-transform: scale(0.75); 收缩的是整个span的大小,这时候,必须要将span转换成块元素,可以使用display:block/inline-block/...;

 

 6  HTTP的了解?

  工作原理:HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。

    Web服务器有:Apache服务器,IIS服务器(Internet Information Services)等。HTTP默认端口号为80,但是你也可以改为8080或者其他端口。

  常见的HTTP状态码:

    200 – 请求成功

    301 – 资源(网页等)被永久转移到其它URL

    307 - Temporary Redirect临时重定向。

    400 - Bad Request客户端请求的语法错误,服务器无法理解

    404 – 请求的资源(网页等)不存在

    500 – 内部服务器错误

 

 7 , 深克隆与浅克

  五种基本的数据类型:string,number,undefined,boolean,null

    (在内存中表现为一个值,保存在栈中)
  一种复杂的数据类型(引用类型):object 【function,array,object】
    (在内存中表现为一个指针,保存在堆中)

     浅克隆只是简单的复制对象,若对象其中一个属性是引用值,由于引用型变量保存的是内存的一个地址,所以后来更改属性,都指向内存中的同一块地址,最后输出的结果同样相同。

    深克隆:for-in循环遍历对象上的所有属性,判断是否为引用值,若是,进行递归,直到所有属性都为原始值为止。
   拷贝出来后,就是一个全新对像,就和之前没什么关系了,以前的改变也不能对新的产生影响!!

posted @ 2020-06-28 16:49  edczjw  阅读(125)  评论(0编辑  收藏  举报