关于今天的电面QUQ

来源:互联网 发布:二值化算法程序 编辑:程序博客网 时间:2024/05/21 10:59

今天晚上酒足饭饱回到座位上,悠闲了一下接到一个深圳的电话…… 气定神闲接起来以为是广告,就等着他放录音然后果断挂掉了…然而… 他叫我同学……那一刻我就觉得不妙了… 他说他是xx公司?还是什么部门的没有听清…稀里糊涂的被面了20分钟(时间有点短啊…)… 挂完电话还懵逼了半个小时… 这种销魂的面试方式大概是腾讯吧……也没谁了……

由于已经放纵了一个来月,有些东西有点讲不清楚了……再见来来回回错了好几个吧… 最害怕腾讯式面试(明明是太渣)… 说错了也不跟我说QUQ,然后让我事后自己默默心痛TAT……

先问了我博客为什么用mongodb,然后对node的了解程度

问了几个js的基础问题,原型链,闭包,平常用什么框架,jquery的bind和on的区别是什么

css的盒模型,position有几种值

然后问了web的性能优化,缓存问题,安全问题(XSS,CRSF),输入url到页面呈现发生了什么,为什么dom操作对性能影响大……

有几个答不上来…有几个答错了……QUQ……先统计问题……

1.jq的bind和on和live的区别

现在才发现之前查过这个问题…QUQ,现在已经忘成渣了…。

bind是普通的绑定,优点:1.处理了兼容问题 2.方便使用 。缺点:1.对于之后生成的元素没有作用 2.元素多了会有性能问题,因为要绑定好多元素

live现在貌似已经不被支持了…他是利用冒泡机制,把所有的事件都绑定到根节点,然后根节点通过事件的触发决定对于哪些节点使用哪些函数 优点:1.对于之后生成的元素也有用,利于动态绑定 2.绑定的时候比较快,只有一次绑定(到根节点)。缺点:1.显然是有延时的 2.不能很好的决定事件触发的方式,因为stopPropagation是没用的,已经到了最后一步 3.节点较深性能问题也明显

on貌似是比较底层的实现,bind,live ,还有delegate(没用过……)都是靠on实现的。

2.缓存问题

缓存讲错了… 缓存分两种,强制缓存和协商缓存。强制缓存是用expire,在规定时间内都直接从缓存中读取。协商缓存也有两种,last-modified,e-tag(这里说错了…把expire说到这里来了… 药丸药丸…)last-modified用来表示文件上次修改的时间,如果修改时间一致,从缓存中读取,否则重新传输。但是由于两台服务器上时间可能不一致,那么文件修改的时间就也不一样,因此有了e-tag来唯一标志修改时间。QUQ

3.XSS和CRSF问题

这几天断断续续地在看《白帽子讲web安全》… 只看了XSS,还没有看到CRSF,虽然之前看过这两个问题,但是记不住…因为不理解…所以只讲了XSS的攻击…QUQ

XSS有点像脚本注入,CRSF是跨站点请求伪造。

4.闭包的作用是什么

闭包的作用……我回答说是对函数作用域进行保留,然后可以缓存临时状态… 不知道对不对。

*****************无关分界线**********************************

关于闭包,很容易造成内存泄露。看了一篇文章 https://l-movingon.github.io/posts/2016-05-06-use-javascript-closures-efficiently.html 。

闭包在node中很常用,像回调函数这样,因此也很容易造成内存泄露。闭包常出现的地方是计时器,回调函数(比如ajax处理数据这样),绑定事件这样。闭包要等到完全解除计数了才会被放到垃圾回收队列中,那什么时候完全解除计数呢。比如对于计时器,在清楚计时后被垃圾回收(clear),因此即时清楚计数是方法之一。还有对于回调函数,就只能在不需要的时候把闭包=null来及时清理。绑定事件时候的闭包在事件解除绑定的时候才会清楚。

**************************************************************

闭包的作用,从几个博客上撸下来,大概是:

1.模拟块级作用域

2.模拟对象,创建私有变量,实现封装

3.缓存临时状态,在使用闭包的时候可以使用当时传入的状态

4.提供模板机制(工厂)


5.dom操作为什么对性能影响大

问到这个挺懵逼,一般都是说…要避免dom操作,因为他性能差…然而没关注过为什么差… 结束之后问面试官,他说是1.因为js 的dom操作和页面的dom操作其实是两套机制,js使用只是调用了api,也可以用xx来操作dom…没听清… 所以会造成性能差 2.就是造成回流和重绘啦



0 0
原创粉丝点击