先说一下背景吧,双非本科计科专业,大一大二时间可以说是都浪费了,相当长的迷茫期了,但好在上课听了些东西,以至于在大三开始前端漫漫路后学起来也更容易吧。现在大四,想着通过面试检验一下自己,于是投了这家还算挺大的上市公司的实习岗,去之前看了不少面试题,主要是关于JS、jQuery方面的,HTML、CSS复习了下(这是铺垫)。

没有笔试(害得人家看了好久的笔试题),首先当然是自我介绍了,主要说了下自己对前端工程师应该具备的素质和能力的理解,然后就开始了正经的技术面:

1.  说下Chrome的内核吧(简历上写了熟悉常见浏览器的兼容问题)

基于webkit的Blink内核

2.CSS中的选择器都有什么?

标签选择器、ID选择器、类选择器、伪类选择器、属性选择器、伪元素选择器、交集并集选择器

3. div上下左右怎么居中?

先说了最简单的margin:0 auto;

然后是绝对定位方式:

div {
width:100px;
height:50px;
position:absolute;
left:50%;
top:50%;
margin-left:-100px;
margin-top:-25px;
}

面试官说如果div没有设置宽高呢?那当然是用transform了:

div {
position:absolute;
left:50%;
top:50%;
transform:translate(-50%,-50%);
}

4.有哪些布局方式?

这个答得不是很好,只讲了PC端使用的静态布局(Static layout),其他的还有弹性布局(rem/em布局)流式布局(Liquid Layout)、自适应布局(Adaptive Layout)、响应式布局(Responsive Layout)没怎么说,还需要多了解。

5.左边固定宽度,右边自适应如何布局?

方式一:触发BFC

.left {
width:200px;
float:left;
}
.right {
overflow:hidden;
}

方式二:左浮动,右margin-left

面试官问用过flex吗,这才想到第三种方法....:伸缩布局:

.father {
display:flex; //父级盒子设置flex伸缩布局
}
.left {
width:200px;
}
.right {
flex:1;//占比为1,填充剩余空间
}

6.如何对页面进行整体优化和效率调优?

HTML方面使用语义化标签,css上使用雪碧图,图片懒加载,js中尽量避免声明多余的变量和函数,精简代码,css、js代码进行压缩,使用外联式。(其实还应该说说缓存和http请求,参考雅虎14条性能优化原则)

7.谈谈使用过的构建工具

主要就是webpack

8.谈谈你项目中使用的布局方式

9.前端三大框架知道吗?vue.js了解多少?

10.ES6用过什么?

总结:打铁还需自身硬啊,问的其实都是基础,毕竟是实习岗,但是js一点儿也不问真是有点懵,毕竟觉得自己js还是比较可以的。。面试官人还是比较不错的,说既然来了就给我些建议,比如GitHub上要有自己很熟悉的项目,简历制作需要注意什么,jQuery的现状等等。总之,需要学的东西还很多很多,加油!