欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于上次腾讯远程面试的题目总结与回答(精心总结回顾) 下

程序员文章站 2022-04-27 08:08:01
...

6. 简单说一说盒模型,W3C和IE怪异盒模型。

W3C标准的盒模型:width == content_width(不包括padding+border+margin)

IE怪异盒模型: width == content_width+padding+border

参考我之前的博客:http://blog.csdn.net/qq_20264891/article/details/79019724

7.简要阐述XSS和CSRF攻击及防范

7.1 XSS攻击与防范
注入攻击。
简而言之,XSS就是想方设法的在用户浏览的当前页面植入自己的script脚本,从而达到窃取用户信息,cookies等。

防范的方法:对一些常用表单的输入字符前端要进行转义、过滤、判断,后端则需要对请求进行甄别,分辨是否为正常请求。

例如:

<input type="text" value="<script>alert(123)</script>" name="input"></input>

显然,正常的用户,不会再输入框里面输入形如<script>alert(123)</script>的字符串。那么前端在js层上,可以对获取到的表单值进行正则判断,或者转义,来甄别这个输入究竟是不是合法/正常的输入。

7.2 CSRF攻击与防范

CSRF就是在用户不知情的情况下,借助用户的信息,来发起伪造请求。

举例:用户访问A网站,登录以后并没有关闭网页或者清空缓存信息。此时被诱导点击B网站,B网站发起恶意请求,此时A网站服务端无法甄别该请求是否是用户的本意,因为用户在A网站已经登录,有cookies,所以相当于B网站借助用户,来在A网站为所欲为。
防范的主要措施在于后端,后端需要严格的来甄别该请求是否用户自己的本意,常见的方法措施有:验证请求头的Refer字段,加Token验证等。
参考文章:https://blog.tonyseek.com/post/introduce-to-xss-and-csrf/
这篇文章写的很好。

8.强类型语言有继承,在JS里面如何做到继承呢?(proto和prototype)

在JS中,继承主要是通过函数原型链来完成的。每个函数创建的时候都有一个_proto_对象,构造函数则有一个prototype对象,该对象上挂载的是可以继承的方法、属性等等。

8.1 构造函数内部有一个test()方法,prototype上也挂着一个test()方法,二者有何不同?

通过实例化对象来继承,只能继承prototype上的方法,而内部的test()方法无权访问。

9.页面性能优化有哪些方式?

a.文件(css,js,img)压缩、合并(雪碧图)

b.减少请求数量

c.减少页面重排/重绘

d.使用懒加载,按需加载

e.CSS3动画有限保持帧率

f.减少dom的访问次数,将经常的访问的节点/属性,进行定义并赋值

g.减少代码冗余量,精简代码

h.静态资源部署到CDN节点

9.1 重绘/重排是怎么回事?有什么区别?

网页加载的时候,会根据DOM节点构造出一颗DOM节点树,同时根据CSS树来渲染出CSS树,最后合并DOM树和CSS树 ,变成Render树,Render树将有所有的元素属性进行渲染、排布,包括使用相对单位的em/vh都通通转化成px,将隐藏的元素踢出树中等。

例如:当使用js动态添加div标签,那么整个dom树的构造就会发生变化,因此会引起浏览器的重排

当某个DOM节点,甚至几个、几十个DOM节点的样式外观、属性发生变化,浏览器不得不把这些变化的属性重新进行渲染,在用户的浏览器view层得到体现,这就是重绘

重排是对dom节点的排布,预先为每个dom节点留好坑,一旦有dom节点增删、位置变动、宽高增改的情况出现,就会进行重新排布。排布是发生在整个DOM树的,一旦DOM树改变,CSS渲染树的子节点/孙子节点也要重新变化,因而会重新绘制。

也就是说,重排一定会引发重绘。

重绘的过程,实际上是先有确定可见的DOM树,根据DOM树,构造出一颗节点/结构相同的CSS树,来对前者进行绘制。一旦DOM树结构变化,CSS树也要跟着变化,那么就会引起浏览器的重新绘制。如果DOM树没有发生结构变化,而仅仅是给其中的某个div加了1px height,然后把border:1px solid black,改成1px solid red,虽然没有进行重排,但是这过程进行了重绘。

也就是说,重绘现象的发生,有可能是以重排作为前提。

9.2 请举例说明重绘,什么情况下会重绘?

重排会引发重绘。样式属性(例如,颜色,字体大小,背景色)改变会引发重绘。

9.3 你认为样式是会引起重绘的吗?什么样式会引起重绘/重排?什么属性会引起重绘/重排?
是的。

color,background等属性会引发重绘。

浏览器窗口变化,DOM树结构变化(包括文本节点变化)引发重排。

10. 浏览器如何知道一个css文件,js文件需要缓存?

首先浏览器访问某个站点,会检查本地是否有缓存,如果有缓存,查看缓存是否新鲜,如果不新鲜,就去询问服务器,我这个缓存协议时间到了,可能不新鲜,你那边更新了吗?如果服务器缓存也没有更新,那么仍然使用本地缓存。这时服务器会返回304,意思是我这里也没更新,你就用以前的缓存吧。

https://www.cnblogs.com/shixiaomiao1122/p/7591556.html看到一个缓存原理图,侵删,图注的很详细:
基于上次腾讯远程面试的题目总结与回答(精心总结回顾) 下

11.HTTP状态码304,502,503

304:缓存并未更新,让浏览器继续使用缓存好的静态文件,无需向服务器请求该静态资源。

502:服务器作为网关或代理,从上游服务器收到无效响应。

503:服务器停机维护。

http状态码:
1XX:临时响应。并继续等待客户端的请求
2XX:成功。201已创建,202已接受,203未授权信息,204无返回内容,205重置内容
3XX:重定向。300 多种选择,301 资源永久移动 ,302 资源临时移动,303 自动转到其他位置,304 未修改。
4XX:请求错误。401 未授权,404 未找到 ,403 禁止请求,406 不接受,408 超时。
5XX:服务器错误。500内部错误,501 尚未实施,502 错误网关,503 请求不可用。

12.Nodejs出现问题,怎么处理异常?已经上线的项目,如何处理异常?

任何项目只有未发现 bug 和已经发现 bug 两种情况

不存在没有 bug 的情况

即便是测试人员也不可能覆盖 100% 的可能性

但是测试表中的要求必须 100%

覆盖如果测试通过上线后产生的 bug

如果是测试表中未覆盖的则编制测试表的人员背锅

如果是不可抗力福利**背锅

作者:王小明
链接:https://www.zhihu.com/question/65688799/answer/233725228

开个玩笑,根据我自己发布响应式页面的时候,首先就是灰度发布,单位里有test服务器,可以直接部署到test上面,模拟上线环境,通过多个使用场景来监测应用是否健壮,例如:超大UV,高并发,加载时间等等,还要看页面中是否有静态资源出现路径错误,以及代码中写错/疏忽/遗漏的地方。

如果没有这个灰度发布的条件,项目上线出了问题,应该第一时间向leader反映,并寻求BUG处理的流程,如果项目访问量不大,可以在夜间偷偷填坑,如果访问量大,那么可以紧急追溯错误来源,并赶紧发布补丁/覆盖原有资源,避免造成不良影响的进一步扩大。如果BUG真的很逆天,那么可以考虑去填写离职手续。

相关标签: 面试 腾讯