面试官姓潘,是一位年轻的和善的面试官,曾在tx就职,面试过程很nice。
他只问了我六个问题,我很多都答的不深入或者答不出来,也就是基础知识不牢固,不透彻。
1.Jquery和vue操作DOM的区别/p>
Jquery和vue.js都是js的库,Jquery操作dom本质上与原生js没区别,只不过Jquery获取的是Jquery对象,js获取的是DOM对象,两者更新数据所使用的方法不一样,但是两者可相互转换。
例如:
var aLink = $(“#a”); aLink.attr(“disabled”,”true”);
var alink = document.getElementById(“a”); alink.disabled = true;
转换:
$(“#a”).get(0) => alink
$(alink) => $(“#a”)
但是vue由于数据是双向绑定的,其中有一个compile解析器,专用于解析模板指令(例如v-on、v-model等),在初始化解析的时候,将变量和dom对象进行了绑定,所以当监听器observer发现(监听)数据发生变化后,会通知订阅者watcher去执行相应的函数,从而更新视图。
2.vue在更新数据时,具体是怎么更新的/p>
这个问题,当时没明白面试官的意图,可能是想问关于virtual dom。
关于理解virtual dom可参考链接:https://www.cnblogs.com/wubaiqing/p/6726429.html
这里博主根据链接里的理解,写下了简略的模拟DOM(实际远不止这些)
后台可见渲染出真的DOM对象,如下图:
3.现假设有一段字符串,形如:”<li>1<p>2<span>3<span>4</span>…….”,把这些字符串解析成DOM对象
利用栈数据结构去解析即可。解析第一个<li>的时候就压入到栈底,依次类推,遇到相对应的闭标签时,就出栈。
4.http请求缓存具体是怎么样的果缓存的文件未过期,怎么让用户即时获取到最新的文件/p>
请参考:
https://www.cnblogs.com/chenqf/p/6386163.html
https://www.cnblogs.com/eric-qin/p/6255616.html
5.说说XSS、CSRF,详细的。
参考:https://blog.csdn.net/Charles_Tian/article/details/82348067
中途由于对CSRF理解的不深,终止了回答,甚是尴尬。
6.请你实现一个功能,在调用delayHello()时,隔一秒后打印5。
面试官给出的代码雏形:
完成之后的代码:
其实最后这题很好解决,我当时其实也是这个想法(但是好像return出来的那个函数忘记加参数了),但是不知道为什么面试官说可不可以不用func(m)的方式调用,有没有其他的方法。
难道要用var f = func; f(m) 的方法/p>
不知道读者们有没有更好的办法…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!