背景
博主目前已经接到快手offer,即将启程下一段实习了,我会将最近的几场面试题都整理出来,供大家学习参考,也可以让大家了解目前大厂面试题题型的转变。
快手一面
令我感叹的是,几场面试下来感觉八股都不多了,更多的都是场景题。
八股部分
- js数据类型,如何判断,几种判断数据类型的方法,并且说他们的优缺点
- bfc
- 盒模型(块级盒子和内联盒子的区别)
- 异步任务(介绍为啥js是单线程并且为啥有异步任务即可)
开源组件库部分
因为简历上写了一个参与开源组件库的项目,面试官就问了
- 如何做到ssr的
- 书写组件有什么注意点(就是客户端渲染还是服务端渲染)
- 介绍为什么有上面那些区别和注意点(服务端不能操作dom)
- 如何做到样式管理(bem)
项目部分
简历上自己搭建了一个全栈的admin项目,就问了下,让我介绍
- 怎么做到的前端限流(维护一个最大队列)
- 无感刷新(用的双token)
- tailwindcss,响应式(介绍,优缺点)
- websocket(介绍,深问了其他细节都常见的,比如我用的ahook的useWebsocket但是不支持心跳检测,如何去手动封装的)
手撕题
手撕深拷贝(主意循环引用用weakmap解决,还有对基础数据类型和null这种类型边界的处理)
算法题
三数之和(leetcode中等难度,用双指针就可以a)
蔚来一面
蔚来八股就比快手多了,怪无聊的
实习
问我在上家公司(石墨文档)做了哪些事情,比如权限设计,按钮权限等等,细问了rbac模型
八股
- ts泛型,泛型工具
- type和interface区别 可不可以拓展,如何拓展 能不能继承,继承后ts转化成js的代码
- js继承(原型链继承,构造函数继承,寄生组合继承,类extends)extends转化成es5的代码
- js数据类型,细问了引用数据类型和基础数据类型区别,我说存储位置(这里我细讲了),但是她说不是想要的答案,不清楚她想要啥,还有null历史原因导致的错误,问的挺细的。
- vite和webpack区别(从commonjs和esm出发说,还有vite双引擎架构,构建过程等等)这里问的也挺细的
- react组件通信(props,ref,context,store)介绍了context优缺点,场景
- react生命周期(不用类组件,不知道)
其他的记不得了
开源和项目看都不看也不知道为什么
手撕题
很巧,上午面的快手,下面面的蔚来,手撕题都出了同一道,深拷贝
算法题
千分位分割
想让我用正则做,不熟我就暴力解决了,期间有个位置符号顺序反了,卡了一下下,其他没啥问题,挺简单的,就esay难度
快手二面
二面纯纯考验代码功底,侧重考察软实力(平时如果代码写的不多的要小心了,大概率很难受)
前十分钟给我介绍业务,大概一面发挥太好了,直接想要我了(自恋一下)
实习
代码质量,代码规范,git workflow, 性能优化,组件封装。大致这几个方面
- 代码规范: eslint,stylelint,commintlint,husky,ts
- 代码质量: 函数抽离,设计模式,代码复用,解耦
- 性能优化: memo,useMemo,useCallbak(都问了原理,这里要好好记,重点!),为什么要用(介绍了业务场景)
- 组件封装: 我举了前段时间写的那个通用可编辑组件,面试官给了一些指导,问了为什么不要antd的(解释公司内部二封过antd的表格组件,不支持可编辑,而且想做一个通用的)
- 现场屏幕共享,给面试官介绍一段自己写的比较好的代码(用的公司电脑,没什么代码,直接看了项目代码,没举好例子,汗流浃背的,给了我一些思路)
主要就是软实力吧,侧重考察代码能力
说一件搞笑的事情,在我面完第二天,我封装这个可编辑组件的问题,后面面试的人手撕题就换成了手撕一个可编辑表格组件(今天跟一个友友聊天才得知的,不能怪我,谁也不知道他们出题这么老六😂)
后面快手就offer了,就接下了。 蔚来算了,进度慢不说,感觉问题奇奇怪怪的,一股八股味
总结
挺感叹的,作为一个非科班的学生也能进大厂了,挺梦幻的,拿到offer的那一刻,激动坏了。也感叹现在面试出题比较灵活,更加考察场景了,另外,有段不错的实习经历再去冲大厂实习,会加分很多,石墨这段实习确实在我面试的时候帮我了很多。接下来就要迎来自己的第一趟大厂之旅了,希望看到这份面试经历的友友也能去到自己心仪的公司。