【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面状态了,许愿后续都顺利~~

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

相关推荐

02-16 01:39
南昌大学 Java
重剑Ds:感觉不太可能 后端都减飞了 根本不缺人
点赞 评论 收藏
分享
今天周一休息,突发奇想写一篇阶段总结。如题,我已经去了一个和Java彻底毫无关联的行业。曾经我以为自己能在计算机行业发光发热,没想到刚入行一年多就当了逃兵。从最开始的热爱到现在一看到代码就厌恶,不知道自己经历了什么。所以我去干什么了?答案是:在成都当了租房销售。上班那会压力大了就念叨着去干租房中介,但是一直下不去这个决心,想着自己学了四年多的计算机知识,终究还是不甘心。终于在某一天准备八股文的时候,看着无数篇和工作内容关系不大的理论知识,那一刻下定决心,决定尝试一下销售行业,也算是给自己一个交代。后面阴差阳错的投了成都自如去当租房管家,没想到面试很顺利,在当天一百多个面试的人里面,我成为了为数不多通过的几个幸运儿之一。目前已经培训通过,正式入职,也开了单,也有压力但是每天过得很开心,真心喜欢那种和人交流的感觉,哪怕是最后没有选择找我租房。说这些也是想告诉那些大三,大四正在找Java实习而焦虑的同学:你们现在还年轻,选择很多,容错率也很高,可以尽情去尝试自己喜欢的行业和工作。不用因为某一次的面试没通过或者简历石沉大海而焦虑,更不用因为身边人都在挤编程的独木桥就强迫自己跟风。也算是自己的碎碎念吧,也希望自己能在新的领域取得一点小成就。也祝牛油工作顺利!
沉淀小子:干啥都不丢人啊,生存是必须要的,销售很考验一个人综合素质能力的,好的销售人脉和资源可不比写字楼的白领差啊
点赞 评论 收藏
分享
评论
5
42
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务