阿里一面总结

更意外的是,收到阿里的面试通知。我是这样想的,如果面试官,问的问题前两个我都回答的不好,就让人家挂电话吧,然后不耽误人家时间了。但是小哥哥好温柔,声音超好听的那种。


因为自己实在是没有优势,所以在问道说,你觉得自己学习比较深入的前端知识是什么,我就说我比较喜欢CSS。

  • 层级关系(关于内联样式,style样式,link形式,import形式),为什么会有这三种,都应用在什么地方。

面完现在才后知后觉,这个作用,应该从优先级,缓存,性能各方面来回答。


1.优先级:(1)写在标签里的style属性,内嵌样式(优先级更高),写在HTML中的style标签里面的内部样式表(次之),还有通过link标签引入的CSS样式外联样式(最低)。


2.缓存:外联样式静态资源直接加载进来渲染就ok。style和inline样式肯定会阻塞页面的加载和呈现。

  • 怎样可以覆盖父级DIV的样式。用什么办法?

我说到了选择器,但是好像也说的不是很清楚。(父级选择器和内容选择器。)
当时脑子短路没有想到important,他在选择器中优先级是最高。


important > 内嵌样式 > ID > 类选择器 > 标签选择器|伪类|属性选择器 > 伪对像 > 继承 > 通配符。


1. 在同一组属性设置中标有“!important“规则的优先级最大
div{
margin-left:20px!important;
margin-left:40px;
}


2.继承css样式不如后来指定的CSS样式。


3.开发者的规则高于浏览者,这个是肯定的。

  • 垂直居中方式(大概说了好几种吧,不按套路出牌,咋不问垂直水平居中啊。)
  • 下面几种方式。

    注:前面几种都是在知道自己高度和父容器高度的情况下:
    1.利用绝对定位和transform。

.parent{
    position: relative;
}
.son{
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
}

2.用绝对定位和margin

.parent{
    position: relative;
}
.son{
    position: absolute;
    top: 50%;
    margin-top: //高度的一般
}

3.用弹性盒布局Flex;这个不用管元素的高低。(垂直水平居中)

.parent{
    display: flex;
    justify-content:center;//设置盒子元素在主轴方向上的对齐方式;
    align-items:center;//侧轴方向上的对齐方式
}

4.使用插入table标签。(垂直水平居中)

.parent{
    display:table-cell;
    vertical-align: middle;
    text-align: center;
}
.son{
    margin:0 auto;//如果是块级元素
    display:inline-block;//如果行级元素
}

5.垂直水平居中

.parent{
    position: relative;
}
.son{
    position: absolute;
    margin:auto;
}

6.基线对其方式:这个不是很懂

.parent{
    text-align: center; 
}
.sonTemp .son{
    vertical-align: middle;
    display: inline-block;
}

原理:设置一个参照物,和容器一样高,然后在父级设置水平对齐方式text-align:center在参照物和子级设置基线对其方式vartical-align:middle.需将参照物和子级都设成行内块display:inline-block.

  • jsonp有了解吗?

jsonp是json的一种使用模式,可以让网页从别的域名那获取资料,即跨域读取数据。jsonp是被包含在函数调用中的json。


它包含数据和函数两个部分。回调函数是当响应到来时应在页面中调用的函数。回调函数的名字一般是在请求中指定的,数据就是传入回调函数中的json数据。

web方面规则的出现一般都是为了解决安全问题吧。之所以有同源策略,一个很重要的原因就是对cookie的保护吧。
cookie中存着sessionID.黑客一旦获取sessionID并且在有效期内,就可以登录了;
如果我们访问一个恶意网站,没有同源策略,那么网站就能通过js访问document.cookie得到关于用户的登陆信息一类的东西。这不就完蛋了。

2.跨域。面试官只让我说了jsonp。

说了它借用<script>标签不受同源策略限制原理。为src属性指定一个跨域的url。因为jsonp是有效的js代码,所以在请求完成之后,即在jsonp响应加载到页面中之后,会立即执行。


优点:简单易用;能够直接访问响应文本,支持在浏览器和服务器之间双向通信。


缺点:(1)jsonp是从其它域中加载代码执行。如果其它域中不安全,很可能在响应中添加一些恶意代码。 (2)判断它是否请求失败很不容易。h5中提出z在<script>一个onerror事件处理程序,但还没有得到大多数浏览器支持。

3.CORS实现跨域

说一下cors吧:它通过自定义HTTP头部让浏览器与服务器进行沟通,从而决定请求响应是否应该成功。在发送该请求的时候,我们在头部设定一个Origin,如果服务器同意i访问,就在Access-Control-Allow-Origin头部中回发相同的源信息。


两者区别:(1)cors比jsonp除get要求方法以外也支持其他的http请求技术。(2)cors可用一般的XMLhttpRequest,这种方式错误处理方式更好(3)更加安全,请求和响应都不包括cooies信息。

补充一下:


303:see other该状态码表示由于请求对应的资源存在着另一各url,应使用get方法定向获取请求的资源。303明确表示客户端应当采用get方法获取资源,这点与302状态码有区别。


302:临时性的重定向。该状态吗表示请求的资源已被分配了新的url,希望用户能使用新的url进行访问。302表示的资源不是永久移动,只是临时性。也就是说已经移动的资源对应的url将来还是有可能发生变化。


301:永久性定向。该状态码表示请求的资源已被分配了新的url,以后使用该资源现在所指的URL.


307:Temporary Redirect :临时重定向。该状态码与302有相同的含义。尽管302标准禁止post变化get,但实际使用时大家不遵守。 307会遵照浏览器标准,不会从post变为get。但是对于处理响应时的行为,各种浏览器有可能出现不同的情况。


503:服务器超时,服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。

  • cookie和session(这个之后单独总结一下吧)。

  • promise,看之前的博客吧,主要解决了什么。

主要解决了异步编程的问题啊。

  • 有什么想问他的。(我逮住一个机会问了二维码扫描,超级感谢,他讲的也很清楚。)

差不多就是:


首先获取一个唯一的密码(也就是二维码)这个二维码是将后台所有session中登陆信息压缩而成的一个字符串转换过来的。我们用手机扫描的时候,手机上是登陆状态,会将uid与调取到手机微信产生的token进行绑定,并且上传到服务器,此时,浏览器通过长轮询查询session,如果匹配,返回201,然后通知服务器,客户端由此进入一个新的接面。

总结:

1.总体来说,好多问题也记不太清楚了,这次面试可能很基础的。(面试官觉得我学的基础吧)
2.回答还算好吧,但还是不深入,不系统。 3.最后面试官讲的那个二维码扫描问题,我能记一辈子的,哈哈哈。
4.之后肯定过不了的。所以还是继续学习吧。

猜你喜欢

转载自blog.csdn.net/qq_39083004/article/details/79894613