【wxg微信支付】前端实习面经(一二三面)

一面

时间:2020/03/25 11:00 45分钟

形式:腾讯面呗

  • 讲项目

  • 小程序的用户鉴权机制

    • session_id状态过期怎么办
  • 谈谈git flow

  • web安全方面你知道什么?

    • CORS,攻击者怎么攻击的
  • 跨域及解决方案

    • 你觉得为什么浏览器要有同源策略呢?
  • webpack性能优化方案

  • 两道编程题

    • 手写迭代器

    • 手写防抖

二面

时间:2020/03/29 15:00 60分钟

形式:腾讯面呗

  • 讲项目

  • flex布局

  • position属性

  • 输入url到浏览器的过程

  • js原型链

  • 问ES6的新特性(讲了很多,他挑着细问了一些)

    • var、let和const的区别

    • promise

      • promise.all 和 promise.race

      • 比如promise.all是并行的,怎么封装promise做串行处理,讲思路(晚上我试着写了下,代码在下面)

      • 怎么用promise写async/await

      • promise和setTimeout区别(想问事件循环吧)

  • cookie和session的区别

    • 浏览器禁用cookie,怎么办?(token)
  • 想问我docker(我秒说不会)

  • 算法题:topK,时间复杂度O(n)

Promise执行串行:

Promise.all虽然是并行的,但返回结果是有序的。所以面试官的思路应该是让我写一个函数:执行顺序串行,而不是只做到结果顺序有序。

思路一:完全基于promise

const sequence = function (arr) {

  let result = [], len = arr.length;

  let promises = arr.concat([() => Promise.resolve()])

  return new Promise((resolve, reject) => {

    promises.reduce(

      (prePromise, nextPromise, index) =>

        prePromise.then((data) => {

          result[index] = data;

          if(index === len) resolve(result.slice(1))

          return nextPromise();

        }),

      Promise.resolve()

    );

  });

};

思路二: async + for of

// 保证执行时串行

const sequence = function (arr) {

  let result = [];

  return new Promise((resolve, reject) => {

      (async function next(){

        for(let item of arr){

          let temp = await item();

          result.push(temp)

        }

        resolve(result);

      })()

  });

};

测试样例

const delayFn = (delay, val) => () => {

  return new Promise((resolve, reject) => {

    setTimeout(() => {

      resolve(val);

    }, delay);

  });

};

const p1 = delayFn(300, 1);

const p2 = delayFn(200, 2);

const p3 = delayFn(100, 3);

sequence([p1, p2, p3]).then(

  (res) => console.log(res),

  (rej) => console.log(rej)

); // 1 2 3

三面

时间:2020/03/31 10:00 35分钟

形式:腾讯会议

  1. vue和react的区别

  2. vue的生命周期

  3. react的生命周期

  4. MVVM和MVC相比的优势

  5. 扩展运算符了解吗

  6. 浮点数相乘,写一下代码

    function mut(num1, num2) {
    
      const numStr1 = num1.toString(),
    
        numStr2 = num2.toString();
    
      if (numStr1.indexOf(".") == -1 && numStr2.indexOf(".") == -1)
    
        return num1 * num2;
    
      const [a1, a2 = 1] = numStr1.split(".").map((item) => parseInt(item));
    
      const [b1, b2 = 1] = numStr2.split(".").map((item) => parseInt(item));
    
      let res1 = a1 * b1;
    
      let res2 = a2 * b2;
    
      let res = res1 + "." + res2;
    
      return parseFloat(res);
    
    }
    
  7. 问了一下项目

  8. KMP算法了解过吗(不会)

  9. 快排的过程?

    • 你觉得快排有什么缺点?(不稳定)

    • 快排什么情况下会O(n^2)?(每次取的 pivot 都刚好是最大或者最小的元素)

当天进hr面状态了,许愿后续都顺利~~

#实习##面经##腾讯##前端工程师#
全部评论
二面算法题topk 时间复杂度on怎么做? 快速选择还是中位数
点赞 回复 分享
发布于 2021-04-13 22:27
大佬你的三面是面委会吗
点赞 回复 分享
发布于 2021-08-19 13:31

相关推荐

听说改名字就能收到offer哈:Radis写错了兄弟
点赞 评论 收藏
分享
10-14 23:01
已编辑
中国地质大学(武汉) Java
CUG芝士圈:虽然是网上的项目,但最好还是包装一下,然后现在大部分公司都在忙校招,十月底、十一月初会好找一些。最后,boss才沟通100家,别焦虑,我去年暑假找第一段实习的时候沟通了500➕才有面试,校友加油
点赞 评论 收藏
分享
3 35 评论
分享
牛客网
牛客企业服务