简单写一个前端面试来记录一下把
补一下前两天的面试,其实我觉得每一次面试都受益匪浅,遇到好的面试官他会像一个老师一样去跟你交流,这次遇到的面试官还是很nice的,不像今天的面试官,很没有礼貌,听他说话都不想进这个公司了emmm
进入正题,顺序可能不对,仅仅凭借我的记忆点来写
1.首先是进行简单的自我介绍
2.问一下你是否知道关于定位的一些东西
position的属性:
absolute:绝对定位 定位后空间释放 相对于最近已定位的祖先元素
relative:相对定位 定位后空间不释放 相对于自己的初始位置
fixed:固定定位 定位后空间释放 相对于浏览器可视窗口
static:默认的定位
sticky:粘性定位 吸顶效果
3.原生ajax的原理:我直接写了一下做了个截图了解一下
4.跨域问题
首先跨域必须要知道的就是同源策略:
同源策略/SOP(Same origin policy)是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。
解决跨域的方法简单总结一下
(1)jsonp,主要是通过script标签的src属性来进行
(2)ifram:不过现在不怎么用了,用iframe标签
(3)postmessage解决跨域:
postMessage(data,origin)方法接受两个参数,data表示要传递的数据,orgin主要是表明窗口的源
(4)cors(跨域资源共享)
浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信
(5)WebSocket协议跨域
(6)nodejs中间件代理跨域
5.闭包
闭包其实就是函数嵌套函数,内部函数引用外部函数中的局部变量,变量不释放
好处就是:代码模块化,能够让一个变量长期在内存中
缺点:内存泄露
6.es6的新特性
我主要说了一下常见的,比如
1、let const 块级作用域的问题
2、箭头函数:书写方便,改变this的指向
3、字符串书写形式(字符串模板):`${}`
4、解构:字符串,数组等等
5、promise:进行异步操作
7.浏览器渲染机制:
将CSS解析成CSSOM树(CSS Rule Tree)
根据DOM树和CSSOM树,来构建Render Tree(渲染树),注意渲染树,并不等于DOM树,因为一些像head或display:none的东西,就没有必要放在渲染树中了。
有了Render Tree,浏览器已经能知道网页中有哪些节点,各个节点的CSS定义,以及它们的从属关系,下一步操作就是Layout,顾名思义,就是计算出每个节点在屏幕中的位置。
Layout后,浏览器已经知道哪些节点要显示,每个节点的CSS属性是什么,每个节点在屏幕中的位置是哪里,就进入了最后一步painting,按照算出来的规则,通过显卡,把内容画到屏幕上。
8.问到了移动端为什么使用translate比使用left之类的反应更加迅速:
这个问题当时我没有反应过来,后来才明白就是重排和重绘的问题,我们都知道在性能优化方面有个技巧就是要减少重排,尽量重绘来提高性能
9.http和https的区别:
HTTP(Hyper Text Transfer Protocol,超文本传输协议)被用于在web浏览器和网站服务器之间传递信息,HTTP协议以明文的方式发送内容,不提供任何方式的数据加密,如果攻击者截取了web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信息,比如:信用卡号,密码等支付信息。
HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer,安全套接字超文本传输协议),为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL/TLS,依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。其中SSL(Secure Socket Layer,安全套接层),TLS(Transport Layer Securit,传输层安全协议),SSL 3.0和TLS 1.0差别很小,在HTTPS通信中具体使用哪一个还要看客户端和服务端的支持程度,二者在网络模型中位于哪一层?
区别:
(1)HTTPS协议需要CA申请证书,一般免费证书比较少,所以需要一定费用
(2)HTTP是超文本传输协议,信息室明文传输,HTTPS则是具有安全性的SSL加密传输协议
(3)HTTP和HTTPS使用的是完全不同的连接方式,使用的端口号也不一样,前者是80,后者是443
(4)HTTP连接很简单,是无状态的;HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,比较安全。
(5)谷歌搜索引擎算法中,比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中排名会更高
10、问了一点vue和react的问题,没有很深入的问,大概是问用vue有什么优点之类的:
优点:轻量级框架、简单易学、双向数据绑定、组件化、视图、数据和结构的分离、虚拟DOM、运行速度快(非官方答案)
11、redux的运行机制
从网上找了一个图感觉还不错
顺便讲一下虚拟dom:
过程:创建虚拟dom树-》生成真实dom树-》绘制界面显示-》(更新界面的时候 getstate()更新状态-》重新创建虚拟dom树-》新旧树比较差异-》更新差异对应真实dom-》局部界面重绘)
其他的知识点有点记不得了emm,今天就到这里把