我觉得经历一次面试要从中发现一些问题,比如说自己还了解不深入的知识点或者自己面试方面的问题,从中学习总结一些东西。面试经历如下:
开场后首先是自我介绍。这个之前一直以为就是说说自己的专业、学校、兴趣爱好就好了。还来发现自我介绍是有技巧点的。摘取知乎大神的回答如下:
一般人回答这个问题过于平常,只说姓名、年龄、爱好、工作经验,这些在简历上都有。其实,企业最希望知道的是求职者能否胜任工作,包括:最强的技能、最深入研究的知识领域、个性中最积极的部分、做过的最成功的事,主要的成就等,这些都可以和学习无关,也可以和学习有关,但要突出积极的个性和做事的能力,说得合情合理企业才会相信。企业很重视一个人的礼貌,求职者要尊重考官,在回答每个问题之后都说一句“谢谢”,企业喜欢有礼貌的求职者。
。
自我介绍完就开始问项目,问的点包括:
1、为什么使用这个框架:也就是再问这个框架与其他的想比优点是什么,这个一定要在面试前准备好项目框架与同类框架之间的区别。
2、跟项目有关的基础知识点:这个属于硬实力,如果说准备的话,就是一定要充分了解自己写在简历上的前两个项目,一般第一个项目会问很久。要充分掌握项目上突出的知识点。
3、在这个项目中你遇到过什么困难:这个问题我的理解是你这个项目有什么技术难点,你是如何解决的。这个要说项目中一个技术亮点,然后突出自己的解决能力问题。觉得这个需要提前准备。
一般关于项目会问的比较久,如果说项目问完了之后会开始问一些基础知识,因为在问项目时面试官通常会问完问题就把话语权交给你,这时候是*发挥的时间,可以通过面试官给出的问题,广泛发散思维表现出自己对这个问题理解的深度以及宽度。但是不能确定的就绝对不能说出来,避免面试官深问。同理的是,自己不够了解的知识点,绝对不能写在简历上。一般来说面试时间是固定的,项目聊得越多,基础问的时间就越少。可以避免暴露出自己的一些知识盲区。
关于基础知识这里记录一下,属于大多数前端面试都会问到的基础知识,和各个方向一样,都有面试经典问题。问到我的基础知识包括:
1、事件流
事件流描述的是从页面中接收事件的顺序。
事件传播的顺序对应浏览器的两种事件流模型:捕获型事件流和冒泡型事件流。
冒泡型事件流:事件的传播是从最特定的事件目标到最不特定的事件目标。即从DOM树的叶子到根。【推荐】
捕获型事件流:事件的传播是从最不特定的事件目标到最特定的事件目标。即从DOM树的根到叶子。
2、事件委托
那什么叫事件委托呢?它还有一个名字叫事件代理,JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。那这是什么意思呢?网上的各位大牛们讲事件委托基本上都用了同一个例子,就是取快递来解释这个现象,我仔细揣摩了一下,这个例子还真是恰当,我就不去想别的例子来解释了,借花献佛,我摘过来,大家认真领会一下事件委托到底是一个什么原理:
有三个同事预计会在周一收到快递。为签收快递,有两种办法:一是三个人在公司门口等快递;二是委托给前台MM代为签收。现实当中,我们大都采用委托的方案(公司也不会容忍那么多员工站在门口就为了等快递)。前台MM收到快递后,她会判断收件人是谁,然后按照收件人的要求签收,甚至代为付款。这种方案还有一个优势,那就是即使公司里来了新员工(不管多少),前台MM也会在收到寄给新员工的快递后核实并代为签收。
这里其实还有2层意思的:
第一,现在委托前台的同事是可以代为签收的,即程序中的现有的dom节点是有事件的;
第二,新员工也是可以被前台MM代为签收的,即程序中新添加的dom节点也是有事件的。
事件委托的原理:
事件委托是利用事件的冒泡原理来实现的,何为事件冒泡呢?就是事件从最深的节点开始,然后逐步向上传播事件,举个例子:页面上有这么一个节点树,div>ul>li>a;比如给最里面的a加一个click点击事件,那么这个事件就会一层一层的往外执行,执行顺序a>li>ul>div,有这样一个机制,那么我们给最外面的div加点击事件,那么里面的ul,li,a做点击事件的时候,都会冒泡到最外层的div上,所以都会触发,这就是事件委托,委托它们父级代为执行事件。
3、图片懒加载
在实际的项目开发中,我们通常会遇见这样的场景:一个页面有很多图片,而首屏出现的图片大概就一两张,那么我们还要一次性把所有图片都加载出来吗?显然这是愚蠢的,不仅影响页面渲染速度,还浪费带宽。这也就是们通常所说的首屏加载,技术上现实其中要用的技术就是图片懒加载–到可视区域再加载。
1、将页面里所有img属性src属性用data-xx代替,当页面滚动直至此图片出现在可视区域时,用js取到该图片的data-xx的值赋给src。
2、在前面“前端知识的一些总结”的博文中,介绍了一款非常简单实用轻量级的图片延时加载插件echo.js,如果你的项目中没有依赖jquery,那么这将是个不错的选择,50行代码,压缩后才1k。当然你完全可以集成到自己项目中去!
4、性能优化
这是前端经典问题,这里是总结部分:
http://blog.csdn.net/riddle1981/article/details/77647986
5、什么是重排和重绘
当DOM的变化影响了元素的几何属性(宽或高),浏览器需要重新计算元素的几何属性,同样其他元素的几何属性和位置也会因此受到影响。浏览器会使渲染树中受到影响的部分失效,并重新构造渲染树。这个过程称为重排。完成重排后,浏览器会重新绘制受影响的部分到屏幕,该过程称为重绘。
6、rem
rem(font size of the root element)是指相对于根元素的字体大小的单位。简单的说它就是一个相对单位。
7、响应式布局有哪些方案
1、用media实现的多媒体查询,分别写样式
2、流式布局
3、固定宽度
4、bootstrap等框架实现响应式布局
5、rem实现响应式布局
8、有很多页面的项目应该如何提高开发效率
这个问题我在网上没找到很好的答案,我自己是按照MVC设计模式上面答的。等找到了更好的答案会来更。
基础问完以后这个时候差不多就到了面试的尾声,面试官有可能会聊聊天问你一些你的个人规划什么的,问有没有个人规划,一定答有,实在没有可以现编,体现自己想提升知识巩固基础,了解新技术就可以来了。
到最后面试官会问你,你有什么问题要问我。看到一篇觉得回答得不错的讲解如下,面试者如何回应面试官问的「你有哪些要问我的?」?
从招聘者角度去考虑,如果你招来的人是一个对公司没有要求,也不敢对公司提要求的人,你会不会觉得他实力不行?如果你招来的人是一个对公司不感兴趣的人,你会不会觉得他不是很想付出努力?如果你招来的人是一个对公司没有问题的人,你会不会觉得他可能根本不想融入公司呢?反过来,从应聘者角度去考虑,提问也是非常有效的了解公司的渠道和途径。找工作不容易,更需要慎重,和面试官的当面交流是最好的机会。更重要的是,通过交流,你能够明白:这家公司的价值观是怎样的?他们希望你来干什么?更重要的一点是,问出有价值的问题,是让应聘者获得企业尊重的重要方法。尊重永远不是天上掉下来的,是靠自己要出来的。你什么都不要,什么都不问,企业当然不会给你你心里想要的尊重。