Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

一年半前端跳槽面试经验(头条、微信、shopee) #20

Open
chenjigeng opened this issue Mar 17, 2020 · 0 comments
Open

一年半前端跳槽面试经验(头条、微信、shopee) #20

chenjigeng opened this issue Mar 17, 2020 · 0 comments
Labels

Comments

@chenjigeng
Copy link
Owner

chenjigeng commented Mar 17, 2020

在2019年末的时候,突然想搞点大事,思来想去,感觉只有跳槽是最刺激的。

由于我比较懒,不想换城市,所以这次只面试了头条、微信和 shopee。十分幸运,都拿到了 offer。接下来就简单的说下大家关心的面试题吧。问题的答案的话,之后有空我再补一下吧。

由于我之前的公司是有专门的重构工程师写 css 样式的,所以当面试官开始问 css 的时候,我都会跟面试官说我对 css 可能不是很熟,讲明原因。

头条

一面

  1. position 有哪些属性

  2. position: sticky 用过没,有啥效果

  3. typeof 的原理,与 instanceOf 、 Object.toString.call() 的区别

image

  1. react 有哪些生命周期函数,分别讲下每个生命周期函数会在哪个时候被执行。

  2. react 哪些生命周期可以 setState

  3. 提供一个 VDOM 对象,写一个 render 函数来让他变成一颗 DOM 树。(比如大概长这样)

    {
    	type: 'h1',
    	props: {
    		className: "",
    		style: "",
    	},
    	children: [] // 嵌套节点
    }
  4. 来都来了,简单写一个快排吧。

二面

  1. 0.1 + 0.2 === 0.3 吗? 为什么?(计算机的底层都是由二进制来表示的,对于 0.1和 0.2 这种数字在用二进制储存的时候会有精度误差)

  2. 实现一个算法,来完成字符串相加,比如 "111" + ”2222“ = ”2333“。(高精度算法)

  3. 问我最近对什么技术感兴趣,说来听听。(这里聊了好久,至少有半个小时)

    跟面试官聊了挺多。主要有

    • react 为什么是平台无关的框架,如何实现的。(依赖注入)
    • PWA
    • WASM
    • v8引擎 如何执行 js 代码(这一块我不熟,我就简单聊了编译原理,代码的编译过程)
    • AST 以及 AST 有啥应用 (babel/ Tree-shaking 以及之前有人用 AST 来实现 微信小程序动态执行代码)
  4. img 标签间距问题的原理以及如何解决

  5. 深度拷贝

头条三面和四面都是后台大佬面试我,所以基本没问前端的知识

三面

  1. DNS 查询的过程,分为哪两种,是怎么一个过程(分为 DNS 递归查询和迭代查询,具体有什么区别可以查查)

  2. 如果你发现有个网站你突然打不开了,有哪些可能。(发挥想象,断网啊,DNS 解析出现问题,代理服务器出现问题,流量被劫持了等等)

  3. 有一个"123456789101112131415....n+1"类似这样的序列,求出第m位的数字

    m=11的话,那么答案是0

    m=12的话,答案是1

  4. 有一个有序递增序列,求有多少个不同的数字。比如 [1, 5, 7, 7, 8, 9, 9]。里面总共有5个不同的数字:1, 5, 7, 8, 9

  5. 聊聊人生聊聊未来

四面

  1. 红黑树和哈希表的对比
  2. 哈希表如何解决冲突
  3. 线程和进程的区别
  4. 场景:有一个应用会经常创建、删除节点对象,如何优化。(节点池)

shopee

一面

  1. react 中写类组件的时候,如何解决方法 this 丢失问题

    • 在 constructor 里使用 bind
    • 箭头函数
  2. 使用 bind 和箭头函数的区别

  3. react 生命周期中,在新版本有些将被废弃,也新增了一些生命周期,讲一下?

  4. setState 是异步还是同步

  5. VDOM 渲染原理

  6. 实现一个方法,将传入对象的下划线命名方式全部换为驼峰式(考虑递归的场景)。比如

    // before
    const obj = {
      first_name: 'chen'
    }
    
    // after
    const obj = {
      firstName: 'chen'
    }

二面

  1. es6的模块管理 与 commonjs 的对比

  2. es6 Decorator

  3. es6+ 新特性

  4. 聊项目

  5. Base64 的原理?编码后比编码前是大了还是小了。

  6. 非递归实现树的后序遍历。(这个比较有意思,大家可以试下)

微信

微信其实大部分都是在聊项目,以及问项目相关的东西。一面前会先给个笔试题,做完后才开始面试。

一面

  1. https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/
  2. https://leetcode-cn.com/problems/valid-triangle-number/
  3. 这道题最难。。我使用了回溯法来做,不过不是正确答案,虽然刚好把测试用例都过了。https://leetcode-cn.com/problems/split-array-into-consecutive-subsequences/
  4. setTimeout 的原理
  5. 聊项目

二面

二面的时候是晚上10点多。。我都没想到会这个时间点打电话来面试,我当时正在开开心心的打游戏呢!

  1. 前面基本都是在聊项目
  2. react 和 vue 的区别
  3. SPA渲染的优缺点
  4. 对前端框架的看法(只是解决问题的工具,并不拘泥于具体的框架)

应该还有一些问题,不过太久,当时也太紧张了,不记得了。

三面

  1. 了解微信小程序的底层实现吗(这里其实可以参考下微信的官网,之前做了个汇总,可以看下)

image

  1. 聊项目

  2. 最近比较关心的技术

总结

每一个面试环节,都必不可少的有以下环节

  • 自我介绍
  • 聊项目
  • 面试题

面试题的话,算法题是少不了的。大家可以多去 leetcode 刷下题目(虽然我也没刷多少)。这里我介绍下我当时刷的两套题

建议在面试前先准备好一段自我介绍的台词,并且对简历的项目要比较了解,可以对面试官可能提出的问题先做好答案。那么祝各位大佬们开开心心!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant