双非鼠的日常实习(快手版)
从十一月初开始,本鼠陆陆续续面了滴滴、快手、百度三家公司,目前的进展是:滴滴排序挂,快手三面挂,百度oc。如果没有意外发生的话,大概率鼠鼠会去百度开启下一段旅行了。之前面试的时候经常到牛客上搜索面经,本着开源的精神,也将自己的面经简单的做一个分享,希望大家不要嫌弃
快手国际化
一面(60min)
- 原型链是怎么构成的: 经典八股,贴图了
- 看代码说结果(关于原型链的):
function A() {}
- css场景题,记不清了,主要涉及sticky
- typeof的相关输出结果: 对object输出都为'object'
- 怎么判断类型,有哪些方式: instanceof,object.prototype.tostring.call
- 手写flat,=并去重升序
- 实现trim
- promise的相关用法
- 看代码说结果,关于promise
- 使用node开一个端口
- 简单的TS类型:有:
type Person = {
- 实现promisefy:将回调函数写法改成async await写法: 高阶函数+promise
- 实现sleep函数
const a = new A();
console.log(a.constructor);
console.log(a.prototype); // undefined
a.abc =
console.log(a.__proto__); A.prototype
console.log(A.prototype.constructor); // A
name: string;
age: number;
}
实现:
type Key = // "name" | "age"
二面(60min,忘记录音版) 一面后三天
- 讲一讲你在opensumi社区做的内容: 像背八股一样
- 覆盖了哪些case场景:巴拉巴拉
- 面试官对我们学校的蓝山和红岩工作室挺感兴趣,叫我讲一讲(两头夸)
- 使用jest的时候,你一般使用流程是怎样的呢:讲了讲测试前,测试中怎么模拟,测试后的工作
- 低代码的事件通信机制使用的是什么呢:订阅发布
- 在你的上一段实习经历时,在开发项目时,你一般是怎么进行沟通的呢
- 能说一下一个项目从提出到上线的具体流程吗
- 当需求派发下来时,但是你觉得需求不合理时,你是怎么去协商的呢
- 手写:订阅发布机制:发布、订阅、取消、执行一次自动取消
- 手写:实现一个链式调用的类:
class Chain{}
const a = new Chain()
a.log(1).sleep(3).log(2);
// 1
// delay 3s
// 2
三面(60min,依旧忘记录音版)二面后一天
三面面试官迟到了十五分钟
- 讲一讲你觉得最有挑战性的一个项目吧: 先讲了讲opensumi,再说了说we重
- 你的主要技术栈是react吗,说一下react的diff算法吧:经典八股
- 你知道react的fiber架构吗:经典八股
- fiber架构的流程是怎样的呢:经典八股
- 虚拟DOM是一个什么东西呢:经典八股
- 你主要使用的打包工具是什么:webpack
- webpakc的打包流程请说一下:经典八股
- 你说到了按需加载,按需加载的原理是什么呢:tree-shaking的原理+esm的静态分析
- 讲一下webpack在打包过程中的
compiler
对象吧(狠狠踩雷呜呜):回答的不好 - webpack和vite你觉得有哪些不同之处呢:经典八股
- 用过哪些loder和plugin:经典八股
- 手写:请使用Vue/React实现一个实时搜索框组件,包含input输入框和搜索结果下拉列表
假设已存在一个全局搜索方法 doOnlineSearch(inputStr, (error, list) => {})。本鼠只实现了一个简略版的,建议大家把各种错误边界把控住
13 . 实现一个LRU最小缓存器,实现get和set方法。(先入为主,写成lodash的get和set方法了,寄中寄)