这些问题是我在头条的一面面试中被面试官问到的,总结出来,希望对你有用 ^_^
img、span、a、sub、sup、em、i、b、strong
设置width、heigh不起作用
margin、padding垂直方向不起作用,水平方向上有效
因为上面说了行元素设置宽高是不起作用的,所以才会被问到这个,我就解释了为什么它是行元素,因为在使用中,img元素中包含图片的话,它是按照一行排列的,下面的内容是我之后查阅得到的:
img元素是可替换内联元素,可替换就是浏览器根据元素的标签和属性,来决定元素的具体显示形式,img、input、textarea、select、object都是替换元素,替换元素一般有内在尺寸,所以具有width/height,可以设定,当不指定img的width和height的时候,就按照其内在尺寸显示,也就是图片被保存的时候的宽度和高度
参考这里
刚开始我答的是width、height设置为百分比,或者用em、rem这样的单位
然后面试官说的是,里面是有内容的,这样子呈现出正方形,哦,看来刚开始被自己想的拐跑了,然后我就想到了flex,flex中的项目的排列方式设置一下
跨域这个问题,jsonp、domain、webSocket、CORS(请求头Origin字段,服务器判断,返回三个Accept-control-*字段)
跟缓存相关的HTTP请求头中有三个字段:Cache-control、Expires(指定具体过期日期)、Last-Modified(验证资源是否过期)。
关于优先级,Cache-Control比Expires可以控制的多一些, 而且Cache-Control会重写Expires的规则Cache-Control比Expires可以控制的多一些, 而且Cache-Control会重写Expires的规则,Cache-Control是关于浏览器缓存的最重要的设置,因为它覆盖其他设置,比如 Expires 和 Last-Modified
Mainfest可以缓存一个应用,pwa中有Mainfest和Service Worker可以实现缓存
参考这里
跨站脚本攻击,这些可执行的脚本由攻击者提供,最终为用户浏览器加载,不同于大多数攻击,有存储型和反射型,防御方式,编码,过滤,解码
跨站请求伪造(攻击者盗用你的身份,以你的身份发送恶意请求),一次CSRF攻击的步骤:
登录受信任的网站A,并在本地生成cookie
在不登出A的情况下,访问危险网站B
防御的方法:
总的思想在客户端页面增加伪随机值
Cookie Hashing 所有的表单都包含一个伪随机值
验证码
不同的表单包含一个不同的伪随机值
刚开始想到的就是分页的原理,就是每次服务器端返回一定数目的数据,然后面试官说假如到了100页,客户端要缓存这么多数据吗?这个数据多的话,浏览器肯定是吃不消的,然后我就说了这样的话,可以在显示某一屏的时候,缓存下一屏,这样体验好一点
利用Date对象
其中,因为setInterval函数也是存在着延迟的,所以就需要矫正时间,关于矫正时间,我当时主要从客户端出发,但是后面想到可以利用与服务器沟通,获得时间
说了双向绑定、vue-router、vue-resource,关于对象引用的情况说了数组的两种情况下的处理(设定值和改变长度)
当时在回答这道题的时候,可能表述的不够清楚,后面自己也重新做了思考,也出了它的代码