搜狗前端面试

2019-04-10  本文已影响0人  七月花未开

1、为什么JavaScript是单线程的?

作为浏览器的脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来复杂的同步问题。

为了利用多核CPU的计算能力,HTML5提出Web Worker标准,允许JavaScript脚本创建多个线程,但是子线程完全受主线程控制,且不得操作DOM。因此,没有改变JavaScript单线程的本质。

2、js事件循环 事件轮询 event loop

重复执行step2、3、4;称为事件循环。

http://note.youdao.com/noteshare?id=9e52de23f6b7a1036c17bf8c4d65d7dd&sub=BE38B92ED5D44746971370C6190C13C2

3、js中点击事件的三种写法

<button id="btn">按钮</button>

方式一:var btn = document.getElementById('btn');

  btn.onclick = function() {  alert(123);  };

方式二:btn.addEventListener('click',function(){  alert(123);  },false);

方式三:<button id="btn" onclick= "demo()">按钮</button>

  function demo() {  alert(123);    }

4、ES6的箭头函数问题及let、const变量声明问题

5、position问题,父元素不加定位,子元素position:absolute

6、flex优点

不需要进行浏览器兼容测试

不再有布局界面的痛苦

简单的域验证

丰富的媒体支持

实现表现层和内容的真正分离

flex开发环境

CSS支持

7.实现一个div,左边固定div宽度200px,右边div自适应

<div class= "container">

    <div class="left"></div>

    <div class="rigth"></div></div>

简单三种方案:BFC(块级格式上下文)

.container{

        width:1000px;height:400px;border: 1px solid red;

    }

.left{

        width:200px;height:100%;background: gray;

        float: left;    }

.rigth{

height:100%;

        overflow:hidden;  /* 触发bfc */        background: green;

    }

table布局

设置父容器display为table,其他两个子元素设置table-cell

flex布局

设置父容器display为flex,left设置flex为none,right设置flex为1

上一篇下一篇

猜你喜欢

热点阅读