腾讯19届前端实习生面试一面二面

刚腾讯一面...岗位是前端实习生

感觉凉了...


居然没凉,3月14日下午收到了电话,这次说是要做一个在线的笔试,就在qq上共享桌面给面试官看,然后做面试官给的两个题目


一面

时间3.13

自我介绍
Html5
React和vue的异同
vue双向绑定实现原理,从view->model?model->view?
React diff算法 fiber
React新版本(16之后)变化,新特性
判断数组的方法,es3和es5分别是什么
web存储相关(cookie,sessionStorage,localStorage)
事件模型
web性能优化
跨域问题,解决方法
iframe相关
异步,async/await,Promise内部存储原理
webpack loader和plugin的区别
快排和冒排排序,稳定与不稳定
一个排列组合问题,也可以说是递归问题:100级台阶,一次可以走2步或者走一步,有多少种走法
有好几个我都回答的不是很好
...
一首凉凉送给自己

二面

时间3.14
有2个题目,题目要求如下:

请在规定的时间完成下面2道题目,要求功能正常,代码具有可读性。时间:19:40 ~ 21:00。

1.  页面内有一个正方形元素,实现对其拖拽和放下,需要考虑窗口的边界情况。
    2.实现大整数相加算法,两个数用字符串模拟函数原型:function add(a, b) {}

要求:代码具备一定的可读性,不能查阅相关资料。

我提交的代码如下:
第一题:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    .box {
      width: 600px;
      height: 600px;
      background-color: grey;
    }
    .squre {
      background-color: red;
      width: 100px;
      height: 100px;
      position: absolute;
    }
  </style>
</head>
<body>
  <div class="box">
      <div class="squre" id="squre">
      </div>
  </div>
</body>
<script>
  var squre = document.getElementById('squre');

  var xStart, yStart;
  var isMoved = false;

  // squre.addEventListener('click', e => move(e));
  squre.addEventListener('mousedown', e => move(e));
  squre.addEventListener('mousemove', e=> moving(e));
  squre.addEventListener('mouseup', e => moved(e));

  function move(e) {
    isMoved = true;
    var x = e.clientX;
    var y = e.clientY;
    console.log(x, y);
  }

  function moving(e) {
    if (isMoved) {
      var newX = e.clientX;
      var newY = e.clientY;
      console.log(newX, newY);
      if (newX <= 500 && newY <= 500) {
        squre.style.marginLeft = newX + 'px';
        squre.style.marginTop = newY + 'px';
      }
    }
  }

  function moved(e) {
    isMoved = false;
  }

</script>

</html>

第二题如下:

function add(a = '123', b= '111') {
    var value = '';
    var arrA = a.split('');
    var arrB = b.split('');
    var num = 0;;
    while (arrA.length && arrB.length) {
        var newA = Number(arrA.pop());
        var newB = Number(arrB.pop());
        num = newA + newB;
        value += num % 10;
    }
    console.log(value);
    var newValue = value.split('');
    newValue.reverse();
    console.log(newValue);
    var final = '';
    newValue.map(x => {
        final += x;
    })
    console.log(final);
    return final;
}

console.log(123+111);
add();

两个题目都因为时间有点紧,还有不少需要完善的(甚至忘记删除调试代码了...),第一题边界的准确距离判断,第二题返回的还是一个字符串,还需要处理一下

#前端工程师##实习##前端##腾讯#
全部评论
楼主你是在简历上了解算法么  我这个算法渣渣 要凉
点赞
送花
回复
分享
发布于 2018-03-15 14:56
哇,问得有点难度啊,楼主厉害
点赞
送花
回复
分享
发布于 2018-03-13 18:42
滴滴
校招火热招聘中
官网直投
祝楼主好运
点赞
送花
回复
分享
发布于 2018-03-13 18:53
是在腾讯校园官网上投的简历吗?这么快就收到电话面试了!?还是内推?
点赞
送花
回复
分享
发布于 2018-03-13 19:04
Promise内部存储原理,这个问题是什么意思呢?
点赞
送花
回复
分享
发布于 2018-03-13 19:06
楼主答了多长时间?是不是压迫性的面试
点赞
送花
回复
分享
发布于 2018-03-13 19:13
最后一道算法题,正确方案是怎么解决的?
点赞
送花
回复
分享
发布于 2018-03-14 13:27
楼主是因为简历上有写React的相关项目经历吗,所以被问到了一些React的问题?
点赞
送花
回复
分享
发布于 2018-03-14 14:24
**,居然还有在线测试这个。。。我估计我接不到电话了要,算法我就是渣
点赞
送花
回复
分享
发布于 2018-03-15 13:31
楼主最后那个大数相加不用考虑进位吗?而且如果给的两个数,位数不等的话,也会出现问题
点赞
送花
回复
分享
发布于 2018-03-15 14:54
楼主是真厉害
点赞
送花
回复
分享
发布于 2018-03-15 23:39
楼主,腾讯的面试之后还有消息吗?
点赞
送花
回复
分享
发布于 2018-03-18 16:27
//我也试了一下大数相加 function add(a,b){     if(typeof a !== 'string'||typeof b !== 'string'){         console.error('require two strings')         return     }     if(isNaN(+a)||isNaN(+b)){         console.error('require to be normal number string')         return             }     var min = a.length>b.length?b:a     var max = a.length<b.length?b:a     var len = min.length     var lenmax = max.length     var upgrade = 0     if(a.length===b.length){         min = a;         max = b;     }     var res = []     while(len--){         var sum = parseInt(min[len])+parseInt(max[--lenmax])         if(upgrade){             sum += upgrade             upgrade = 0         }         if(sum>=10){             sum -= 10             upgrade = 1         }             res.unshift(sum)     }     res = res.join("")     if(upgrade){         if(lenmax-len-1>0){             var mid = +max.slice(lenmax-len-2,lenmax-len-1)+1             res = max.slice(0,lenmax-len-2)+mid+res         }else if(lenmax-len===1){             res = 1+parseInt(max.slice(0,1))+res         }     }else if(a.length!==b.length){         res = max.slice(0,lenmax-len-1) + res     }     return res }
点赞
送花
回复
分享
发布于 2018-03-18 22:30
写代码可以用带提示功能的编辑器吗?
点赞
送花
回复
分享
发布于 2018-03-26 15:24
拖动写错了
点赞
送花
回复
分享
发布于 2018-04-27 07:28

相关推荐

点赞 95 评论
分享
牛客网
牛客企业服务