阿里前端面试题

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

1.说一下你了解的CSS盒模型

CSS盒子模型:就是用来装页面上的元素的矩形区域。CSS中的盒子模型包括IE盒子模型和标准的W3C盒子模型。这两种盒子模型都包含有内容(content)、填充(padding)、边框(border)、边界(margin)这四个组成部分,这四个部分都包含有top/right/bottom/left四个组成部分。

标准的盒子模型盒子宽度:左右margin+左右border+左右padding+width

IE盒子模型的盒子宽度:左右margin+width

在CSS3中引入了box-sizing属性,box-sizing:content-box;表示标准的盒子模型,box-sizing:border-box表示IE盒子模型。默认的情况下是标准盒子模型

2.说一下box-sizing的应用场景

在浏览器的默认计算方式下,块状元素的宽度计算方式为:左右border+左右padding+左右marging+内容宽度width。如果我们不想要浏览器按照这种计算方式计算宽度,则要用到CSS3中的box-sizing:border-box,固定了盒子的尺寸,无论怎么调整边距都不会改变盒子的大小,不会造成布局错位。

3.说一下你了解的弹性flex布局

使用flex布局的容器(flex container),它内部的元素自动成为flex项目(flex item)。

flex-direction:row(主轴为水平方向)/column(主轴为竖直方向)/row-reverse(从右到左水平方向)/column-reverse(从下至上竖直方向)

flex-wrap:nowrap(自动缩小项目,不换行)/wrap(换行,且第一行在上方)/wrap-reverse(换行第一行在下面)

flex-flow:row nowrap/row wrap/column wrap-reverse...,默认值为row nowrap,即横向排列 不换行。flex-flow是flex-direction和flex-wrap的简写形式

justify-content:flex-start(左对齐)/flex-end(右对齐)/center(居中对齐)/space- between(两端对齐)/space-around(沿轴线均匀分布)

align-items:flex-start(顶端对齐)/flex-end(底部对齐)/center(竖直方向上居中对齐)/baseline(基线对齐)/stretch(当item未设置高度时,item将和容器等高对齐)

4.说一下一个未知宽高元素怎么上下左右垂直居中。

方法1、弹窗元素设置

.pop{
   position:absolute; 
   top:50%;
   left: 50%;
   -webkit-transform: translate(-50%, -50%);
   transform:translate(-50%, -50%);
}

方法2、弹窗的父元素设置

.container{
    display: flex;  
    align-items: center;  
    justify-content: center;  
}

 方法3、弹窗元素的伪类元素设置

.pop:after{
  content:"";  
  display: inline-block;  
  vertical-align: middle;  
  height: 100%;  
}

5.js数组去重

传统js方法:

function removeDuplicatedItem3(ar) {
    var ret = [];

    ar.forEach(function(e, i, ar) {
        if (ar.indexOf(e) === i) {
            ret.push(e);
        }
    });

    return ret;
}

es6方法:

 let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3];
 let set = new Set(array);
 console.log(set);
 // => Set {1, 2, 3, 4, 5}

6.Ajax原理

Ajax的原理简单来说通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面。这其中最关键的一步就是从服务器获得请求数据。首先检查XMLHttpRequest的整体状态并且保证它已经完成(readyStatus=4),即数据已经发送完毕。然后根据服务器的设定询问请求状态,如果一切已经就绪(status=200),就执行open和send方法,其中open方法指定了

a、向服务器提交数据的类型,即post还是get。

b、请求的url地址和传递的参数。

 c、传输方式,false为同步,true为异步。

7.说说你遇到跨域问题时是怎么解决的

如果是协议和端口造成的跨域问题“前台”是无能为力的,在跨域问题上,域仅仅是通过“URL的首部”来识别而不会去尝试判断相同的ip地址对应着两个域或两个域是否在同一个ip上。

方法1:子域名相等的情况下,通过document.domain+子域名和iframe引用实现跨域操作

方法2:利用jsonp,浏览器用callback,通过script标签向服务器跨域请求数据,然后服务端返回相应的数据并动态执行回调函数。

方法3:利用CORS,就是使用自定义的HTTP头部让浏览器与服务器进行沟通,从而决定请求或响应是应该成功

转载于:https://my.oschina.net/wenxingjun/blog/1538430

你可能感兴趣的:(python,javascript,ViewUI)