快手三面凉经

秋招投到现在一个多月了,字节和虾皮一面就挂,快手坚持到了三面,和面试官聊的很好,以为会给过的,没想到今天一看又挂了
timeline 8.21一面(两个小时后通过)8.26二面(面完两天后通过)9.3三面(第二天流程结束)
一面:
1. 开局经典自我介绍,Base 北京,用户增长部门
2. 闲话少说,直接看项目
3. 第一个项目:node 的 cli,为什么想做这个,聊了技术选型和流程
4. 为什么不做成插件呢,因为 cli 简单一点,面试官他们也做过类似的
5. 简历的灰度流程是怎么样的,按美团的仓库灰度,请求自带 cookie,如果仓库的 id 命中灰度的策略则上灰度的代码
6. 第二个项目:next 的,next倒是没怎么问,聊为什么选这些技术栈
7. 图片的瀑布流滚动加载怎么做的,不是用 intersectionObserver,但是我也忘记用什么了,下次就答这个
8. 场景:图片的高度不一样,是否会出现加载新的图片前某一列很高、某一列很矮,导致页面会留白的情况
9. 也许是会的,那么怎么解决?我说按照高度排序,贪心一下选最长和最短的一起,面试官问我懂不懂一个 dp,抽象成一个数组来说:分成两个部分使他们的和尽可能相同,我说就是背包问题,他就说那这个就没必要出了
10. 他们的解决方法是看哪一列短一点,后面多补图片上去那一列
11. 用到了 shadcn/ui,讲一下为什么,对比 antd 这些,这个可以按需引入,自定义主题
12. 那如果官方更新了代码,和我们自定义的主题有出入了怎么办,没考虑过这个问题
13. 聊到了函数式编程,所以给我出手撕:用 ts 写一个 reduceRight 的方法(相比 reduce 反过来遍历)

二面:
- 面试官介绍流程:自我介绍聊项目 + 聊项目简历 + 写算法 + 反问
- 首先是自我介绍,面试官没有打断,我就从自我介绍讲到两个项目完,然后面试官开始问项目
- 关于瀑布流加载是怎么做的,回答 intersectionObserver + useRef + useEffect
- 为什么用 tailwindcss,用过别的吗,讲一下各自的特点,我说了可以直接行内写样式,不过问题是复杂起来要写很多样式,那有什么解决方法吗,我回答可以把通用的长样式抽离出来、拆分一些节点
- 为什么用 MongoDB 这种非关系型数据库,了解过和 MySQL 的区别吗
- 除了 Prisma 还用过别的 orm 吗,有没有遇到过什么坑,又是怎么解决的
- 在美团的项目是自己做的吗,还是同事要求的
- 为什么用  Inquirer.js,原生的 node 命令交互会吗
- 代码是怎么在 node 的环境里面运行的 
- 然后是写算法,实现一个高阶函数,每 x 秒执行一次函数,一共执行 y 次(牛客看见好几次了,三面也出了)
- 定时器一定是准确 delay 的吗,不一定,答了同步异步任务这些
- 有什么办法尽量准确,我讲了用时间戳来计算
- 箭头函数、this、apply、call 的问题,和 bind 有什么区别
- 最后一题是抢红包,给定金额、发几个红包、每个红包价钱的 min max,时间紧迫,用回溯写了一个

三面:
- 面试官自我介绍,我自我介绍,附带讲实习经历项目,最挑战的事情
- 第一个项目是关于做 npm 包的,问题一些常规能答的问题
- 如果想要引入埋点监控、指定哪个组件库、请求库等有什么思路
- 第二个项目是 nextjs 的,问有什么了解
- 数据库是 mongodb,为什么用这个,还知道哪些非关系型数据库吗(redis),和 mysql 有什么区别(使用、功能特性这些)
- 用了 tailwindcss,有什么见解,如果样式很长要怎么解决
- 问样式,隐藏元素的方法(display、opacity、visibility)
- 有什么区别?重绘回流
- 怎么让元素上下左右居中
- 用 magin,定位上左右为 0,元素会在哪
- 问网络,讲一下缓存,强缓存和协商缓存
- 问 expires、e-tags 等的区别,怎么判断要用协商缓存
- 怎么判断变量是不是数组,回答 Array.isArray(),但是这是 es6 的,于是说 instanceof
- 详细询问 instanceof
- 手写一个 repeat 函数,在指定时间内重复执行数次函数
全部评论
能投递多个岗位??
1 回复 分享
发布于 2024-09-04 18:44 北京
佬还有面其他的吗
点赞 回复 分享
发布于 2024-09-04 17:15 北京
投了三次快手 就没进过面
点赞 回复 分享
发布于 2024-09-05 15:43 江西
妈呀,你这个面试问题和别人的面试问题差距太大了吧
点赞 回复 分享
发布于 2024-09-05 16:44 北京
佬,快手面试挂了还能继续投吗
点赞 回复 分享
发布于 2024-09-05 21:17 广东
好难🤯
点赞 回复 分享
发布于 2024-09-09 01:28 上海
哪个部门啊
点赞 回复 分享
发布于 2024-09-19 16:51 广东

相关推荐

在JavaScript中,堆和栈是两种不同的内存管理方式,用于存储不同类型的数据。堆(Heap): 堆是用于动态分配内存的区域,用于存储引用类型的数据,如对象和数组。在堆中分配的内存不会自动释放,需要通过垃圾回收机制来回收不再使用的内存。堆的大小通常比栈大,并且可以动态增长和收缩。栈(Stack): 栈是用于管理函数执行上下文和存储基本类型值的一种数据结构。每当执行一个函数时,都会在栈中创建一个新的执行上下文,包括函数的参数、局部变量和函数的返回地址。当函数执行完成后,对应的执行上下文会被销毁,栈会自动释放相关的内存。栈的大小通常比较小且固定,内存分配由系统自动管理。下面是堆和栈的一些区别:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=d59bf6cbe74a47848bb179590bdf5f59#牛客AI配图神器#存储内容:堆用于存储引用类型的数据,如对象和数组;栈用于存储基本类型的数据,如布尔值、数值和字符串,以及函数执行的上下文。分配方式:堆通过动态分配内存来存储数据;栈通过在执行上下文中的栈帧上分配固定大小的内存来存储数据。大小和生长性:堆的大小通常比栈大,可以动态增长和收缩;栈的大小通常比较小且固定,由系统自动管理。管理方式:堆的内存管理需要使用垃圾回收机制来回收不再使用的内存;栈的内存管理由系统自动处理,通过栈指针的移动来分配和释放内存。生命周期:堆中分配的内存不会自动释放,需要通过垃圾回收来回收内存;栈中的内存由系统自动管理,在函数执行完成后自动释放。
点赞 评论 收藏
分享
评论
14
30
分享

创作者周榜

更多
牛客网
牛客企业服务