Vol.71 一次电话面试

不知怎么回事,一旦紧张起来讲话都吞吞吐吐的,没有平时那么连贯。脑子转得飞快,但是嘴巴跟不上。没有一个好口才,就是不吃香了!

不过话说回来,刚才我经历了一场电话面试,好几个问题吧我给问懵了。我面的是前端的岗位,腾讯真是重在细节啊!

jQuery中选择器的快慢比较

我只回答上来id选择器最快,其他的都不太清楚。

正确答案:id、标签选择器 > 类选择器 > 属性、伪类选择器

AngularJS和Angular的变化检测

这道题我回答前者是“脏数据”,后者是检测有否调用setter函数。

但是面试官追加问我其中的原理是什么,过程是怎么样的?如此细节的东西我根本没法完全回答上来,好在前几天看了篇帖子说脏检查是定时轮询,也没过过脑子就直接说了,真是大错特错!

正确答案:在页面构造完成之后,只有异步事件才会导致组件中的数据发生变化。AngularJS 对常用的 DOM 事件,XHR 事件等做了封装,在里面触发进入 AngularJS 的 digest 流程。在
digest 流程里面,会从 rootscope 开始遍历,检查所有的 watcher 。Angular2 框架直接依赖 Zone.js 来实现变更检查。(阅读更多)

解释一下Angular中的依赖注入

这个很轻松就搭上了,服务模块需要使用@Injectable装饰器,其他模块需要在构造函数里声明。

jQuery中.on(click, …)和.click(…)的区别

当时我一脸蒙蔽,我之前从来没想到要比较这俩,所以就说没比较过,但两种方法都有使用过,感觉没什么区别。

正确答案:前者可以绑定多个事件。(阅读更多)

事件委托:100个行都要有点击事件

XSS攻击中不想编码转义的解决办法

当时没答上来…只说了白名单机制,只过滤脚本的部分,但面试官接着问,如果我想还原脚本呢?或者这个脚本并不是恶意脚本呢?一时语塞……

正确答案:应该要说内容安全策略(CSP),它可以规避不可信来源的脚本,同时禁止eval()函数等,这样恶意脚本就不会被执行。

页面过大时如何分块传输?(chunk)

PWA的原理,以及缓存数据的过期时间

有听说过deferred吗?

完全没听说过,也许是自己项目经验太少吧……

正确答案:deferred对象就是jQuery的回调函数解决方案。(阅读更多)


先写这么多吧,感觉面试不是面基础知识,而是问一些实际操作上的解决办法。这方面经验不是很足,有些甚至是不求甚解,所以导致面试尿崩的情况。这次要吸取教训,明天还要去百度面试,争取表现出一个完美的自己。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注