搜狗前端面试
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