更新:已经入职啦,有兴趣的同学可以发我简历内推,小组急招
省流交代结果:2年前端,脱产一年读硕,从七月份开始海投 offer,目前拿到 offer 如下:字节跳动,富途牛牛,招银网络科技、某 AIGC 初创团队、某 HK web3 初创团队。
背景:最近感觉行情开始回暖了,有约到蛮多面试的,在面试过程中一边不断地这里复习材料,最后面试准备了六万字左右,算法题主要刷的 leetcode hot100 以及一些前端的常见题目。初创团队的面试风格各异就不列举了,整理出有拿到 offer 的三家公司分享给大家参考
字节一面
- 介绍下多端基础库,是如何适配多端投放的?
- pnpm 和 npm 的区别
- 软链和硬链的区别
- 如果 monorepo 中不同的包对同一个依赖有多个版本,会导致什么问题?如何解决
- web 页面性能关注哪些?
- 除了秒开率还关注哪些数据?
- 如何做性能优化?
- 错误数据上报原理
- flutter 开发和原生开发对比,优缺点
- 是如何改善这些问题的?
- pb 协议是如何转 ts 的?
- 浏览器渲染原理
- 浏览器有几个进程几个线程?
- css js dom解析的顺序
- defer 和 async 的区别
- 什么是跨域?cookie 有跨域吗?跨域和跨站的区别?cookie samesite
- 代码1:什么是原型链?判断原型链输出
- 代码1:什么是作用域?判断作用域输出
- 代码3:找到在树中去找对应 key 的路径
- 代码4:实现 flatten
- 反问环节
{
key: 'a',
children: [
{
key: 'b',
children: {
key: 'c'
}
}
]
}
// 比如找c, 需要输出 ['a', 'b']
字节二面
- 自我介绍
- pb 协议转 ts 定义和 mock 功能,具体讲下流程,对业务开发有何提升?有尝试过其他的方案吗?
- 讲下混合栈开发立项的背景、技术预研
- 在混合开发这个项目,有做了什么事情来提高开发效率?
- 介绍下多端基础库的工作、上线范围
- 数据上报和性能数据上报都是常规的吗?有比较特殊的页面吗?
- 在工具链、混合开发、业务开发这几个方向,你哪个方向上的贡献比较突出?为什么?
- 原型链继承和面向对象继承的区别
- 手写算法:实现 async 函数的链式调用
- 反问环节
// 补充 wrapper 函数
function wrapper(fn) {
let prev = null;
return function () {
if (prev) {
// 串上 then 调用链
prev = prev.then(() => fn());
} else {
prev = fn();
}
};
}
function test() {
const foo = () => {
console.log("foo start", Date.now());
return new Promise((resolve) => {
setTimeout(() => {
console.log("foo resolve", Date.now());
resolve();
}, 1000);
});
};
const nFoo = wrapper(foo);
nFoo();
nFoo();
nFoo();
}
test()
字节三面
- 自我介绍
- 某个项目以及负责的模块,项目难点
- 讲下性能优化的常用方法
- HTTP 和 HTTPS
- 看代码输出
- 删除链表的倒数第k个节点
- 反问环节
let result = new Array(3);
let a = 3;
let res = 0;
function foo(a) {
let i = 0;
for (; i < 3; i++) {
result[i] = function () {
res += i * a;
console.log(res);
};
}
}
富途一面
(当时没有立即记录下来,所以比较多问题遗忘了,富途问的偏详细偏底层)
- 笔试题实现
- 讲下 pb 协议转 ts 是如何实现的?具体是如何转换的,不用库的话可以怎么实现?
- npm 的 cache 和 pnpm 的 cache 有什么区别?
- 软链接和硬链接的区别?
- 什么资源适合使用软链接 什么适合使用硬链接
- 谈下对 BFF 的理解
- Node 进程的内存最大值,为什么要这么设计
- Http2.0 的新特性
- 跨域有哪些方案?讲下 CORS 的流程,非简单请求为什么要设计为多发一次请求而不是同简单请求一样?
- CSRF 攻击的场景,有哪些防御手段?csrf token 是怎么生成的?
- vue2.x 的监听函数有哪些缺点?vue3 的呢?
- 反问环节
// 实现一个异步链式调用类
// const person = new Person('小明')
// person.say('hi').sleep(5000).eat('apple')
// 控制台输出:
// hi 小明
// (隔5秒后)
// eat apple
富途二面
- 给一张汇率兑换的图片,描述场景,要求写出对应的代码(后端接口查询、前端查询逻辑与异常处理),描述其他交互会考虑到的需求点
- 如何确保接口重试的话不会导致后端逻辑异常?接口的标志符在哪里生成?这个标志符可以如何生成?
- 给一个梯度交易手续费,要求写出对应的代码查询
- 如果有外网 bug, 应该如何处理?
- React hooks 有哪些限制?如果让你来修改源码,可以通过什么方式去除这些限制(不考虑性能)
- Flutter 混合栈框架的立项背景,Flutter web 有使用吗?
- Node 如何监控内存?
- 反问环节
富途三面
- 自我介绍
- 介绍影响最深的项目并追问细节
- 性能优化常用手段
- 前端开发你觉得都有哪些难点?
- 概率题:一座城100w个人,20w在河东,80w在河西,现在有100w通电话,问跨河通话的电话的数量?
- 算法题:不用 api, 用 O(1) 算法,实现 “com.message.account” 反转为 “account.message.com”
招银网络一面
两个面试官 第一个面试官先快速的问一些基础问题,大概15分钟 第二个面试官针对项目发问,主要围绕性能优化、上报系统,问的偏细节,最后加问了下 a 标签伪类的有无加空格的区别、交集还是并集 反问环节
招银网络二面
两个面试官
- 自我介绍
- 为什么离职?为什么选择大数据?职业规划?
- 前后端开发配合模式?
- 性能优化 一般由什么问题引起?
- 有关注 web 安全吗
- 埋点是怎么做的?会对页面性能有什么影响
- 什么时候有离职的想法?
- 没有关注校招吗?是否毕业了?为什么选择秋招?
- 有收到其他公司offer吗?为什么觉得不合适?
- 薪酬有什么要求?
写在最后
最后选择了字节入职,感觉行情也有慢慢回暖,当然大家还是有工作的情况下慢慢找下家比较好,心态会好一些,我还是太莽了😂 BTW,目前部门 hc 还比较多,大家快快来投,等我入职了就可以内推了!