几次面试题目总结

本月中找工作参加了好几个面试,现在终于找出时间总结一下:

    • 浏览器兼容问题
    • em 和 rem的区别
    • flexbox原理
    • 数组排序
    • keep-alive
    • box-sizing
    • http协议
    • position:relative和position:absolute区别:
    • 选择框架应该考虑哪些方面
    • 全页面组件


浏览器兼容问题

这个问题回答的很不好。一个是准备不足,再就是平时也很少注意总结。结束后在网上查了一下,有些人觉得这个问题就不应该问。好吧。反正IE6的那些hacker方法早忘了。但是还是可以简单从下面几方面说说:
- p、img、ul li标签等默认的padding margin的值在不同浏览器上表现不一样,所以在项目css开始就将其设为0.
- 注册事件的方式,IE和火狐、Chrome等不同。IE使用attachEvent和detachEvent,而不是addEventListener和removeEventListener
- 用到事件委托的地方,在火狐上需要var e = event || window.event这样声明一下,而Chrome会自动把事件对象前面的window给补上。

em 和 rem的区别

这两个都常用到移动端自适应字体大小时。em是相对父元素,rem是相对根元素的百分比。

flexbox原理

突然问原理,愣住了不知道怎么回答。其实就是每个介绍flexbox的文章都会提到的,即:
容器默认存在水平的主轴和垂直的交叉轴,弹性盒模型规定了在两个方向上的居中和排列等方式。 

常用的属性:

容器属性 属性值
fex-direction row row-reverse column column-reverse
flex-wrap wrap nowrap wrap-reverse
justify-content flex-start flex-end center space-between space-around
align-items flex-start flex-end center baseline stretch
align-content flex-start flex-end center space-between space-around stretch
项目属性 属性值
order 数值
flex-grow 数值 默认0
flex-shrink 数值 默认1
flex-basis 数值+px 默认auto
align-self auto flex-start flex-end center baseline stretch

数组排序

数组自带的排序方法
sort()
reverse()
注意:sort()方法默认是根据字符大小进行排序,所以有时候表现不是预想的。需要在其基础上做些修改。
function sortDiy(){
    return arr.sort(function(a,b){
        return a - b
    })
}
其他排序方法
冒泡排序
function bubbleSort(arr){
    var i,len=arr.length,d,j;
    for(i = 0; i < len; i ++){
        for(j = 0; j < len; j ++){
            if(arr[i] < arr[j]){
            d = arr[i];
            arr[j] = arr[i]
            arr[i] = d
            }
        }
    }
    return arr;
}

keep-alive

请参考这个博客:
http://www.jb51.net/article/131110.htm:

box-sizing

box-sizing:content-box|border-box|inherit
content-box是默认的,padding margin在设定的高度之外,会影响统一布局 标准盒模型
border-box 是bootstrap使用的,padding margin 在设定的高度之内 IE盒模型
如果要统一chrome和IE盒模型,使用box-sizing:border-box;

http协议

待补充,这个回答的很烂,基本没回答上来。

position:relative和position:absolute区别:

这里主要强调一点,也是自己以前没注意到的,就是position:relative;可以在不让dom脱离文档流的前提下,对其定位做些小调整。以前只是把他当做position:absolute的辅助,他自己也可以调位置。

选择框架应该考虑哪些方面

这个是二面时被问到的。自己平时也没系统考虑过,回答的也不是很好。回过头来觉得有必要总结一下:

1, 学习曲线。学习曲线平缓的,更容易上手,适合经验少的团队快速上手开发。
2,官方文档是否友好,社群是否活跃,用户量是否多,这决定了是否更容易获得帮助。
3,基于需求和产品。比如移动端最好挑轻量级的。
4,开源库有没有被一个机构控制过度,避免react遇到的许可证问题。

全页面组件

这个也是上面问题的提出者问的。第一次听说这个概念,绞尽脑汁掰扯了几句。面试官不是很满意。其实可以从两个方面:
一个是我自己想到的,从团队协作来说,如果是全页面组件的话,更容易分工,代码合并冲突少,大家各自负责自己的模块。
另一个方面,从代码角度来说,如果是全页面组件,把js代码分割开了,可以减少代码耦合性。如果适当抽取共同组件,还可以提高代码复用率,减少重复代码。


你可能感兴趣的:(学习方法,基础知识,数组,html,js,http协议)