金山2016.04.16广州站面试

先谈感想

早上9点半开始面试,面完了一面20分钟吧,去等候室在等了10分钟然后进行了第二面,第二面有多少分钟我也忘了,只知道我一直在说。。之后差不多等了半个钟,就进入hr面,当时我不知道只剩hr面了,还以为会有三面什么压力面啊等等。hr面面了半个钟吧,从查户口到我的价值观我的男友,到为什么我选择做技术,到问到金山在我们同学的眼中是怎么样的位置,我机智得答除了bat就是金山了。。最后我心机婊的问了一下她,我这是过了吗?那个hr说,对呀你过了呀。我们的offer会在整个流程结束之后就发,也就这一个星期之内吧,到时候会通知你。之后她还跟我说金山见,我超级开心的。感觉幸福来的比较突然,虽然这次面试我也是准备了,人有时会否定自己,有那么多牛人在我的前面他们才是offer收割机,其实不能是这样的想法。
一面的时候除了问我简历上的东西,会再次问到我的笔试试卷的题目我感觉我这个试卷做的怎么样,这就直接问到我的兴奋点了,因为为了整理那个试卷答案我还专门写了个博客去记录,人家看你都这么认真对待当然叫你回去等候室等待二面啊。。
二面的时候那个面试官可能是今天第一次面人?就是感觉他还没有进入虐我的状态,然后他就叫我重复一下自我介绍还有我的简历上的一些问法,感觉就是重复了一面的描述(一面的面试官就在后面啊,求他听到我二面都在重复一面的话的心理阴影面积)然后问的问题是我之前刷题的时候都有比较深入的去百度和理解透的问题,比如跨域。反倒没有问闭包内存泄漏和安全的知识,tcp和浏览器渲染过程而已。两个面试官都是很nice的感觉,以至于我感觉我不是进入技术面,我以为他会问到我会答不出来。下面会总结一下过程中没有回答出来的问题。


一面:流式布局主要是用来解决什么问题,为什么要使用流式布局

作者:郑航
链接:http://www.zhihu.com/question/21679928/answer/84884920
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

早期的Web前端开发者中流传着这些描述了CSS编写方式的名词:
固定布局:顾名思义,网页上的所有元素的尺寸一律使用px作为单位。这种布局方式对设计师和CSS编写者来说都是最简单的,例如,直接设定网页的主体部分宽度为960px,某个搜索框宽度为60px等等。缺点显而易见,即不能根据用户的屏幕尺寸做出不同的表现。当前,大部分门户网站、大部分企业的宣传站点都采用了这种布局方式。

流式布局: 网页中主要的划分区域的尺寸使用百分数(搭配min-、max-属性使用),例如,设置网页主体的宽度为80%,min-width为960px。图片也作类似处理(width:100%, max-width一般设定为图片本身的尺寸,防止被拉伸而失真)。这种布局方式在Web前端开发的早期历史上,用来应对不同尺寸的PC屏幕(当然,尺寸的差异不会太大)。

弹性布局:这类布局的特点是,包裹文字的各元素的尺寸采用em做单位,而页面的主要划分区域的尺寸仍使用百分数做单位(同「流式布局」)。早期浏览器不支持整个页面按比例缩放,仅支持网页内文字尺寸的放大,这种情况下。使用em做单位,可以使包裹文字的元素随着文字的缩放而缩放。在那时,为了使单位em更直观,CSS编写者常常把body元素的font-size设置为62.5%(浏览器默认字体大小16px*62.5%=10px),这样1em便是10px,方便了的计算。使用弹性布局的另一个理由(也是2016年的今天的唯一的理由)可以看看EM单位的好处是什么? - 前端开发

随着CSS3出现了媒体查询技术,又出现了响应式设计的概念。响应式设计的目标是确保一个页面在所有终端上(各种尺寸的PC、手机、手表、冰箱的Web浏览器等等)都能显示出令人满意的效果,对CSS编写者而言,在实现上,是糅合了流式布局+弹性布局,再搭配媒体查询技术使用的一个名词。


二面:
1.事件捕获是什么意思

面试官问我事件冒泡和事件捕获的概念,事件冒泡我说对了。现在再重复这两个概念

事件冒泡:
IE的事件流叫做事件冒泡,即事件开始时由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到较为不具体的节点(文档)。

事件捕获:
事件捕获的思想是不太具体的节点应该更早接收到事件,而最具体的节点应该最后接收到事件。事件捕获的用意在于在时间到达预定目标之前捕获它

在js高程里面讲到尽管“DOM2级事件”规范要求事件应该从document对象开始传播,但是这些浏览器都是从window对象开始捕获事件的。由于老版本的浏览器不支持,因此很少人使用事件捕获,我们也建议读者放心地使用事件冒泡,在有特殊需要时再使用事件捕获。

2.问这里面的执行过程,就是哪个alert会先弹出,是关于javascript的单线程问题

1
2
3
4
5
6
function test(){
var a=1;
setTimeout(alert("a"),3000);
alert("b");
}
test();

先是setTimeout里面的alert弹出来,因为js是单线程的,执行顺序是从上往下的,逐行进行的,这里面的话我网上搜了一下关于js线程和浏览器的线程关系,这里面的逻辑还没有理清楚。

3.css3中,有一个loading的登录小图标,就是一个圆圈,一直在转,就是圆圈从0到100,然后无限次循环,说出相关的css3动画实现办法。
答案明天再整理一下发布吧。