听别人面试的一个体会

进了豹哥的小密圈,听了他跟圈内一个朋友的面试录音,有了一点心得,或者说是体验吧,因为后天也预约了豹哥的面试,就先谈一谈今天了这一个小时的面试录音的体会。
这里当然对事不对人,那个朋友也是很优秀的~

由于自己比较惨或者说是大学里面根本没学东西,导致毕业的时候入门前端,一路上也算是比较坎坷。
大大小小的面试大概五十个左右(ps:没办法啊,倒闭了几个公司,中间的面试就多了),到现在也面试了别人不少次,面试的有刚入门的,也有五年以上经验的(ps:当然这些大牛,可能面试过程中存在不少瑕疵)。
本文会分为两篇,第一篇说一些非技术的东西,下一篇说技术的。
接下来大概讲一下我认为的面试中的一些东西,可能并不准确,欢迎批评指正~

面试序幕

对于刚毕业的,或者工作两年以内的,可能刚开始都会唠唠家常,什么专业毕业的,学过那些课程,怎样的工作经历,
这个作用可能有几点:

*   缓和一下气氛(可能刚开始面试有些同学会略微紧张)
*   了解一些基础情况,有一个基础的定位
*   一个铺垫(总不能上来直接问你会什么不会什么)
*   工作中的角色,定位面试的方向(这个可能是多想)

开场白的话,其实并不是特别重要,从开场白中也能大致了解一个人的性格。

正文开始

面试的流程也跟面试官的性格有关系,有些面试官可能喜欢针对知识点的进行提问(ps:像我之前面试的时候,自己经验也不足,去面试别人,只能这样面试了)
很多会根据一个问题铺开进行提问,由一个简单问题,根据面试者的回答,再进行深入的讨论,在网上看过别人这样的一个面试题目。

老生常谈的闭包问题,题目也是比较经典的。
有这样的几个元素,期望点击每一个,弹出对应的下标

1
2
3
4
5
<p>0</p>
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>

一般我们的回答可能循环绑定事件,然后对应输出,方法大概7-8种或许更多,先看错误例子

1
2
3
4
5
6
var arr = document.getElementsByTagName('p');
for(var i = 0;i<arr.length;i++){
arr[i].onclick = function(){
alert(i);
}
}

这样的输出结果,肯定出来的都是4喽。这可不是我们想要的。改造一下~

1
2
3
4
5
6
7
8
9
var arr = document.getElementsByTagName('p');
for(var i = 0;i<arr.length;i++){
(function(){
var temp = i;
arr[i].onclick = function () {
alert(i);
}
})();
}

可能你用过es6,你想到了用let来替代var,再改造一下

1
2
3
4
5
6
var arr = document.getElementsByTagName('p');
for(let i = 0;i<arr.length;i++){
arr[i].onclick = function(){
alert(i)
}
}

当然也是可以达到效果,这时候面试官可能就let来延伸es6知识掌握,为什么这里用let就可以达到效果,这里因为let本身有块级作用域,并且也不存在变量提升等,
然后可能会再问到js的继承问题,es6又有了class这个类的概念,它又是如何实现继承的,然后再考察源生js如何实现继承,又涉及到了原型链以及作用域链等问题.
一步步的进行考察,我倒是挺喜欢这样的方式,循序渐进。
然后可以再问一些当前比较热门的框架的东西,比如MVVM框架,以vue为例,那肯定又离不开webpack,webpack的机制,又会延伸到nodejs,以及AMD,CMD规范。
这样环环相扣考察的也应该会比较全面。(我还比较low,只能泛泛而谈,vue我也只是demo级别)

豹哥面试过程中也问了几个css方面的问题,个人感觉css这个东西应该算是前端的基本功,很多人都是徒手从样式写过来的。常见的一些,比如定位,浮动,如何清除浮动,单纯的问技术点,肯定没有什么意思,这儿又想到了
我前面提过的一个九宫格布局,又九宫格的布局,可以考到定位,浮动,margin等知识点,然后再对css3的一些东西进行提问。
这里面肯定会包含一些你做过东西的一些常见解决办法。再到考察盒子模型等。

对于初级或者中级的考察,估计里面也应该要涉及到jquery,毕竟这是我们前端的一个入门类库。比如事件绑定,你可能一般用jquery的on方法,这就又可以延伸到事件捕获,事件冒泡。
在如常见的一些列表操作,可能涉及到append,after,before等api,或者元素选择器,如何选择同辈元素,如何选择某元素之后的所有元素,之前的所有元素。
或者jquery里面有一些相似方法的比较,如jquery attr方法与prop方法的区别,最简单的一个例子,就是复选框的全选或者全不选问题,你会用attr还是prop呢,具体也看我之前的写的就可以了

现在移动端应该算是比较普及了吧,问一下移动端的适配问题,适配问题的原理又是什么,说一下rem,再延伸到sass或者less这样的预编译,有可能会涉及到gulp这样的任务流构建之类的。
面试的具体技术内容不再赘述,基本上涵盖了不少内容。(这是初中级的面试,高级的,目前能力不够,也并不知道要问哪些东西,待来日我成为高级再来分享

注意事项

面试的时候一定占据主动,组织好你自己的语言,回答问题要回答到点上,如果语言组织不好,或者绕了好久才到点上,估计很多面试官都会没有耐心。

面试的时候要自然大方一点,最好不好扭扭捏捏,尤其是男同学,我们都是汉子,可不要表现的跟个小姑娘一样~

面试之前的准备工作一定要做好,既是尊重自己,也是尊重别人。面试官要提前看你的简历,可能会真不同的简历去询问不同的内容,就跟老师备课差不多喽。
你自己做准备,这是必须的,做到胸有成竹,方可应对自如。

面试的时候,自信是很重要的,但也要不卑不亢,面试是双方了解的一个过程,既是公司选择你的过程,也是你选择公司的过程,所以并不存在谁高谁低的问题。

最后,在你面试结束的时候,一定要跟面试官说一句谢谢,如果方便的话,不妨跟面试官握个手。这是礼仪。你去面试花费了时间,别人面试你同样也花费了自己的时间。
任何人的时间都是宝贵的。

简单说到这里好了,我也要去准备准备模拟面试的东西喽~~