(啪啪啪,之前写完文章写了一半不知怎么就忘记继续发=。= 现在是8/2,文章大概是一个多月前写的)
终于到最后一篇啦。虽然技术面试早就结束了,不过还是前个星期接到最后一家的Hr的电话,因为已经确定去哪一家了所以就拒绝了。至此所有的面试都结束啦~结果还是挺不错的。
总结一下最后一家的面试,电面,周日早上10点开始,每轮40分钟左右,最后一面出了点意外花了一个多小时。隔一个小时左右下一轮,2点半结束所有技术面。效率太高啦,而且面试官很nice,赞。
一面 - 基础 & 广度
声音比较小而且有点杂,下次应该和面试官说提高一下音量,不然一些问题都听不清楚。
自我介绍,学习前端中遇到的一些比较困难的问题,收获最多的是什么
印象中还是很多面试官都会问我这个问题,但是说实话,当时觉得难的然后解决了的现在肯定不难了,那些难的没解决的说出来又觉得不好(没有去解决问题),之前面试的时候提过在移动端图片的上传的处理,其实主要是比较绕,而且有兼容问题,涉及到一些dataUrl,canvas和formdata的转换,说实话也不怎么难,但是因为时间久了,大半年前的东西细节基本忘记了,说出来反而容易被面试官问倒,所以说了一次就不想再说了。
然后就讲了移动端的PC端的区别,就是和之前说的差不多。css的优先级排序 em和rem的区别 盒模型是什么
重构方面的问题,优先级排序其实有点不清楚几个嵌套时的优先级,笔试题的时候遇到了,靠猜。基本的优先级:
!important > 内联 > id选择器 > 类选择器 > 标签选择器 > 通配符选择器
https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity
不知道一些文章看到的每个选择器的权重是哪里看来的=。=
当时没有讲出现的位置和嵌套的影响url输入到看到内容发生了什么 dns查找的过程
这里有太多东西可以讲了,不过当时刚好复习了DNS查找,就着重讲了这部分。然后就是基本的一个网页请求的过程,没有太深入各个部分比如网络层TCP/IP,服务器怎么拿到请求的资源然后返回,页面渲染的过程。面试官说能讲多少讲多少,但是当时有点紧张就讲的不是很多了。DNS查找就包括递归查找和迭代查找啦。模块化AMD和CMD的区别
都是异步加载,但是在加载顺序上有区别。(错了)
AMD:Asynchronous Module Definition,中文名是异步模块定义的意思。它是一个在浏览器端模块化开发的规范,RequireJS支持;
CMD:Common Module Definition 通用模块定义。Seajs。
最明显的区别就是在模块定义时对依赖的处理不同
AMD推崇依赖前置,在定义模块的时候就要声明其依赖的模块
CMD推崇就近依赖,只有在用到某个模块的时候再去require
AMD和CMD最大的区别是对依赖模块的执行时机处理不同,注意不是加载的时机或者方式不同
后面看了文章发现说错了,准确的说是执行时机不同。
https://www.zhihu.com/question/20351507
现在都用webpack和ES6了jquery事件中bind,live,delegate的区别
当时说了事件的原理,三个阶段,为什么会用live。但是不知道live和delegate的区别。
http://kb.cnblogs.com/page/94469/
文章说的挺清楚了,live是需要监听的元素进行调用,然后jquery会将事件绑定到document节点上,根据事件类型和选择器进行触发事件
delegate是容器元素进行调用,就和on一样啦,不过参数顺序有区别。123$('a').live('click', function() { alert("That tickles!") });$('#container').delegate('a', 'click', function() { alert("That tickles!") });$('#container').on('click', 'a', function () { alert("That tickles!")});
live比delegate好,live需要包装一个元素后,调用live时才绑定事件到document上;delegate直接找到容器元素。
虽然现在都是用on来做了。
MVC是什么,M,V,C之间相互怎么通信
刚开始是面试官问我一个例子:新浪微博,发布微博和展示微博,怎么做到各个模块的解耦。刚开始没有提示MVC,自己有一点点MVC的思想,但是说的有点乱,估计面试官不满意,然后就让我说MVC,说完噼里啪啦一顿后让我再复述一遍。就比较清晰了(说MVC的时候自己在纸上做了笔记)。面试官太Nice啦!cookie Session localstorage区别和用途
都是存储。说完区别后问我另一个场景:使用localstorage缓存js文件,简述方案解决缓存和更新的问题跨域的解决方案,页面的一些优化方案,webview和html之前怎么相互通信,HTTP协议,get和post的区别,几个常用的状态码
- 给两个具体场景说方案:1. 使用localstorage缓存js文件,简述方案解决缓存和更新的问题 2. 就是上面说的新浪的例子
二面 - 深入
- 简历写了angular:双向绑定的原理。angular适合用在什么场景,用一个例子说明jq和ng的实现的过程和不同点,我用了购物车的例子,然后问为什么需要双向绑定,有什么好处,有什么缺点,怎么解决。
- 还是根据简历:前端数据渲染方案,jq,模板引擎,MVVM,这三种方案的具体实现过程,各自的优势和劣势,分别适合用在什么场景
- HTTP协议,盒模型是什么,float和absolute的区别,三种方案说水平垂直居中。
- 数组去重怎么做,多维数组呢
- 一个需求:图片可以拖动,当拖动释放的时候根据释放的速度计算图片继续滑动的速度(释放的一瞬间越快,图片继续划得越远),说方案
三面 - 大方向
- 为什么学习前端,学了一年都是怎么学的。读了什么书,上什么论坛,从哪些渠道获取知识。
- 作为一名学生和作为一名实习生,对一个产品的看法,了解,完成的过程中要怎么做。
- 技术问了3个开放问题 pc和mobile的适配 前端性能优化 前端安全。根据我说的简单深入。为什么要用雪碧图,为什么要减少请求数
- 实习时间安排,介绍了部门,有没有什么问题想问他。感觉三面基本都差不多