一年半经验shopee,YY,企业微信面经

1,524 阅读4分钟

本人19年毕业,毕业之后一直在深圳一家中厂工作,在公司的时候主要做的都是一些内部的系统,就想趁着这一波金三银四换一下工作,接触更多偏C端的东西,前前后后也准备了一个来,包括算法和手写等,这篇文章主要讲述的是shopee,YY,企业微信的面经~

shopee(toC)

一面

shopee的话一面比较偏基础偏八股文,而且每一面都会有一道算法题,听面试官说算法占的比重还是比较大的。

xss和csrf原因,如何避免 juejin.cn/post/684490…

vue双向绑定原理(2.0和3.0),3.0为什么改用proxy

vue3的主要变化 juejin.cn/post/691000…

vue生命周期,beforeCreate可以获取data吗?created可以获取data吗?在created要获取dom要怎么操作?【next-tick 事件循环】

http1和http2的区别 yuchengkai.cn/docs/cs/#ht…

https yuchengkai.cn/docs/cs/#ht…

在vue中如何操作数组会让视图更新,对象新增属性呢?

vue dom diff是如何比较的

css的margin重叠问题 【BFC】

浏览器缓存【强缓存,协商缓存】,不缓存要设置哪个属性

扫码登陆原理.

做过什么性能优化

移动端渲染长列表如何优化

移动端适配方案特点

类型转换相关 {}+{}结果

if([]){xxxxx}会执行吗?

if({}){xxxxx}会执行吗?

为什么?

深拷贝

跨域问题,解决方式,预检请求有注意过吗

算法:求一个数平凡根,保留三位小数【没有思路,所以换了一道题,后面看了一下,用二分法就能解决了】

leetcode-cn.com/problems/sq…

算法 --->将数组对象转化为类似于级联选择框要的输入

const input = [	{province:'广东',city:'深圳',area:'宝安'},	{province:'广东',city:'深圳',area:'南山'},	{province:'广东',city:'汕头',area:'潮阳'},	{province:'广东',city:'广州',area:'天河'},	{province:'浙江',city:'杭州',area:'西湖'},]
const output = [  {    value: '广东',    children: [      {        value: '深圳',        children: [          { value: '宝安' },          { value: '南山' }        ]
      },
      {
        value: '汕头',
        children: [
          { value: '潮阳' },
        ]
      },
    ]
  },
  {
    value: '浙江',
    children: [
      {
        value: '杭州',
        children: '西湖',
      }
    ]
  }
]

二面

二面的话,主要都是根据简历来问的

根据简历,问了js堆栈的相关概念

var a = function b(){}发生了什么?www.zhihu.com/question/26…

为什么js中的string存放在栈中?

堆是什么数据结构?

根据简历,问了文件上传相关问题

根据简历,问了web component相关问题(日常工作中有没有其他地方用过shadow dom)

算法:二叉树相关 leetcode199 leetcode-cn.com/problems/bi…

已拿offer

YY(hago)

一面

工作中遇到什么问题,如何解决,最好体现你的技术深度。

margin重叠的原因,如何解决?

box-sizing的两个种类,以及他们的区别。

如何理解ts中的泛型?工作中如何运用?

在vue2.0项目中使用ts要配置什么?

rem和em的区别是什么?

说一下http中的缓存,开发中如何利用?

在项目中如何保持代码的可维护性?

代码题: 九宫格,只能走格子的上下左右格子,其他走法就是不合法的,用代码去判断,自己抽象输入输出。

二面

说一下项目

说一下nexttick原理,nexttick有什么应用场景

vue3新特性

跨域问题

http2与http1.1的区别

你刚刚说到头部压缩,可以讲讲怎么压缩的吗

你刚刚说到tls,可以说下这个过程吗,为什么建立链接时候用非对称加密 juejin.cn/post/684490…

base64编码的原理,为什么会有base64编码

怎么操作cookie,请求怎么携带cookie

cookie和localstorage,sessionstorage的区别

cdn原理了解过吗。 juejin.cn/post/684490…

css3动画了解过吗

已拿offer

企业微信

一面

一面前面试官给了四道面试题,给了四十分钟。

  1. 洗牌算法:对52张牌洗牌,要求尽量洗乱,而且原牌不能在原位置上重复
  2. 给定一个字符串,编写一段代码测试该段字符串的括号是否完全闭合。

[()]{}{[()()]()} - true
[(()] - false

  1. 现有新旧两个数组,旧数组经过一系列操作(包括新增、删除、移动等)后可得到新数组。请实现一个函数,找出旧数组上应该执行的操作列表。
const nodes = ['A', 'B', 'C', 'D'];
const after = ['B', 'A', 'E', 'D', 'C'];
const operations = [];

// 请自行定义VDomElement结构
function diff(nodes, after) {

}
  1. 数组a[N],存放了数字1至N-1,其中某个数字重复一次。写一个函数,找出被重复的数字。时间复杂度必须为O(N), 空间复杂度不能是O[N]。 函数原型: int find(int a[], int N)

接下来是面试

问项目相关的问题

vue父子组件如何通信

用webpack做过哪些优化(开发和生产)

tree-shaking原理 juejin.cn/post/684490…

node和浏览器 事件循环的不同之处

讲下vue 为什么要用虚拟dom ,优缺点是?

dom diff如何比较?是从左到右还是从右到左 zhuanlan.zhihu.com/p/362539108

讲下防抖跟节流的原理和应用场景。

讲下你对闭包的理解,以及闭包的应用场景。

讲下http和https的不同之处。

有了解过webassembly吗?

做出来了三道算法题还是挂了,有的题面试官说时间复杂度不符合要求,不得不说,微信对算法的要求是真的高,大家还是没事多刷刷算法吧🤕🤕🤕