未分类

实习招聘面试经历-4

穷

(啪啪啪,之前写完文章写了一半不知怎么就忘记继续发=。= 现在是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一样啦,不过参数顺序有区别。

    1
    2
    3
     $('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的适配 前端性能优化 前端安全。根据我说的简单深入。为什么要用雪碧图,为什么要减少请求数
  • 实习时间安排,介绍了部门,有没有什么问题想问他。感觉三面基本都差不多
分享到