阿里前端面试

和面试官提前预约好时间,等了有半个小时吧,面试官说比较忙,线上出了一些题目,半个小时作答,然后针对题目交流了有半个多小时吧,后续还问了意向工作地点、介意换工作地等相关问题。

下面是题目:

1、行内元素、行内块元素、块级元素分别有哪些标签?分别列举3个以上(越多越好)。
行内元素: span a b br
行内块元素: img input
块级元素:p div  h1-h6

2、定位方式有几种?分别是相对什么元素定位?
static:按照正常文档流排列
relative:参考自身静态位置,不脱离文档流
fixed:参考可视窗口
absolute:参考距其最近一个不为static的父级元素通过定位

3、具体介绍下标准盒模型是什么样的;一个标准盒模型的宽度等于? width, padding, border, margin ;
标准盒模型的宽度等于=width(内容的宽度)+padding+borde+margin

4、要给下面所有li元素绑定click事件,在鼠标点击每个li的时候alert该li里面的内容;且在鼠标离开外部ul元素范围的时候弹出一个alert提示。(实现时请注意代码执行效率及浏览器兼容性、不要使用现成的框架库,用原生js编写完成)
<ul id=”ulItem”>
<li>内容1</li>
……此处省略1000+个li对象(注:不要使用循环绑定,如果使用循环绑定1000+的绑定事件会很慢)……
<li>内容n</li>
</ul>

var ul = document.getElementById("ulItem");
ul.addEventListener("click", function(e){
  var target = e.target;
  if(target.nodeName==='LI'){
    alert(target.innerHTML);
  }
})

5、
function ALIBABA() {  return 1 ;  } 
var ALIBABA;
console.log( typeof ALIBABA );   //输出:function
6、下面哪些不符合同源策略:BCDEF
    A、http://www.domain.com/a.js 和 http://www.domain.com/lab/c.js
    B、http://www.domain.com:8000/a.js 和 http://www.domain.com/b.js
    C、http://www.domain.com/a.js 和 https://www.domain.com/b.js 
    D、http://www.domain.com/a.js 和 http://domain.com/c.js
    E、http://www.domain1.com/a.js 和 http://www.domain2.com/b.js 
    F、http://www.domain.com/a.js 和 http://192.168.4.12/b.js
7、为什么JavaScript会被设计成单线程?  ;
浏览器需要渲染DOM,JS可以修改DOM结构,JS执行时,浏览器DOM渲染会暂停,两段JS也不能同时执行。
设置为单线程,为了避免DOM渲染的冲突。

8.在 NodeJS 中,如何去高效的处理并发任务?  ;

8、promise 、setTimeout 、setInterval 的执行顺序 :
function foo() {
  setTimeout(() => {
    console.log('111111');
  });
  new Promise(resolve => {
    console.log('222222');
    resolve();
  }).then(() => {
    console.log('333333');
  });
  console.log('444444');
}
foo(); 
以上代码的执行顺序:
'222222'
'444444'
'333333'
'111111'

9、react:

vue:生命周期 ,劫持  ;

10、webpack :  ;
前端项目的构建工具
webpack是一个打包模块化Js的工具,在webpack里面一切文件都是模块。
11、移动端touch事件:;
touchstart
touchend
touchmove
touchcancel
12、斐波那契数列:( 1、1、2、3、5、8、13、21、34 )
fibo(N){} 
fibo(5); //[1,1,2,3,5]
13、快速排序:
function quickSort(arr){
  if(arr.length<=1){
    return arr;
  }
  var left = [];
  var right = [];
  var key = arr[0];
  for(let i = 1; i<arr.length; i++){
    if(arr[i]<key){
      left.push(arr[i]);
    }else{
      right.push(arr[i]);
    }
  }
  return quickSort(left).concat(key,quickSort(right));
}

14、跨域都有哪些解决方案(如果可以深入点介绍,更佳):
(1)CORS(跨资源共享)使用自定义的http头部让浏览器和服务器进行沟通,决定请求或响应是否应该成功还是失败
(2)JSONP:由回调函数和数据组成。通过动态<script>元素来使用,为src属性指定一个跨域URL
(3)图像,<img>标签
(4)使用代理
15、写一个简单的闭包:
function F1(){
   var a = 10;
   return function(){
     console.log(a);
   }
}
16、面向对象,原型链,构造函数,可以大家介绍下对他们的理解: ;
17、nodejs具体做过什么: ;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值