今天去参加了某公司的二面,面试过程很轻松,跟面试官就是聊天的方式。但是通过这次面试发现自己对很多知识点理解的还是不到位,在这里就把我答的不太好的问题写出来,算是一种总结吧。
1.谈性能优化的时候提到了setTimeout,面试官接着抛出了下面这么一个问题,你觉得下面两种方式的区别:
方式1:
funciton a(){
dosomething1;
setTimeout(function(){
process;
},1000) ;
dosomething2;
}
方式2:
function b(){
dosomething3
}
setInterval(function(){
b();
},1000)
dosomething4
我:由于js是单线程的,假如说something4的执行时间超过了1s,setTimeout开始执行的时间间隔就超过了1s。至于方式2间隔的时间都是1s。
面试官:第二种方式你确定一定就是1s,假如dosoemthing3的时间超过1s,难道setInterval还能插队不行。那他们的区别到底是什么呢?
我:。。。。。。。。
面试官:******(我当时听明白了,但是现在忘记了,只记得后面的时间间隔会缩小)。(该问题以后慢慢研究)
2.关于页面reflow的问题
面试官:指出哪个标签,后面的结构也会引起前面的回流?
我:。。。。。
面试官微笑着说:table标签,假如每一行的尺寸边长了,就会影响前面的结构
我:(恍然明白,只好点头)
3.在框架设计中,创建基础类的时候需要定义哪些方法:
我:传递参数(config)、初始化(init)、extend(实现继承)、implement(实现接口)、before()、after()(仿照arale里面的设计将的)。。。
面试官:还有页面渲染的方法(render)、销毁的方法(destroy)
我:哦,想起来了,arale里面就有这些方法
4.nodejs的好处
我:作为服务器,并发访问的数量比传统的服务器更多
面试官:还有呢
我:(开始瞎说)是不是可以使用ajax请求的时候
面试官:ajax要交给后端处理,怎么会使用js呢,在提交请求的时候。。
我:哦,表单检验的时候
面试官:对,这样就可以实现代码重用
5.谈到canvas
面试官:如何操作canvas呢?
我:(很无奈)之前都是看别人写的游戏,自己没有过
面试官:可以在canvas上面放写DOM节点嘛
我:(想死的心都有了)
6.谈到模块化
面试官:讲讲模块化开发的理解?
我:第一是解决了命名冲突的问题,第二是解决了函数依赖的问题,其实就是模拟C语言或java里面的include、import。
面试官:嗯,那你知道define是如何实现的吗?
我:(苦逼地答道)没有看过seajs的源码
面试官:猜猜看
我:首先根据定义好的路径,找到相应的js文件,然后执行后面的回调函数,然后通过export把方法或者类暴露出来。。。
面试官:(不太满意,在纸上演示起来),可以通过export或module把定义的内容放到一个map里面,下次就可以使用,有时间读读seajs的源码,没多少
我:(很真诚地)哦,以后有时间真得看看
7.前端模板
我:前端模板的话,在项目中没有用过,不过看着别人的DEMO照着做过,认识比较肤浅。前端模板主要用来解决页面中存在大量的ajax请求或者要对json进行大量处理的时候会用到,但是目前的话模板存在的最大的问题是存在性能方面的问题以及兼容性问题
面试官:差不多就是这些,那么有个模板引擎,只有几十行的代码,你知道是如何处理的吗?
我:(很无奈地,知道不对,但是为了不冷场)对模板语言进行翻译
面试官:那几十行能解决翻译问题吗?
我:(更无奈地说)不能
面试官:举例说明
模板地方式:<h1> {{ username}} </h1>
字符串连接的方式: '<h1>' + username + '</h1>'
你把‘{{’和’}}‘换成++,再在<h1>、</h1>外边加上引号就行了
我:(真心认同)对对对
8.对动态编译的理解,针对css这块
我:就是让静态的css表现出动态的特征,例如定义一个变量color,那在多个地方都可以使用,还可以进行嵌套,不过我觉得这个太麻烦,还要放到服务器下面才能看到效果
面试官:那其他人用这种技术的原因只是为了耍酷吗?什么情况下使用这个好
我:在经常需要修改的地方,例如页面首页
面试官:嗯,需要经常修改的地方,使用动态编译是比较好的
9.关于图片延时加载的讨论,此处是交流图片延迟加载的利弊。
10.关于技术博客的讨论
我:主要上博客园、csdn随便看看,大牛的博客也看看,但是他们基本上不怎么更新,我更多的是看像张鑫序这些人的博客
面试官:嗯,现在业内好的博客产量不多,大牛们的博客就不涉及到技术细节了,没有像张鑫序那样科普性质的文章了。
我:嗯
11.其他问题:响应式设计、css3中的animation、transition的使用等等
结论:路漫漫,在前端这条路上还有很多的不足,还是很嫩,得抓紧时间提高自己,尽快成为一名优秀的前端工程师。