字节抖音游戏

字节抖音游戏

一面

讲一下权限接口优化的项目

涉及到很多业务方如何推进的

实习用到的技术栈有哪些

讲一下react的一些特点

和vue之间的差别

讲一下fiber架构

讲一下promise

讲一下async/await的实现原理

rem,em如何使用rem来进行多端适配

各种攻击方式【xss,cref,中间人攻击】

中间人攻击会出现在哪种场景

css的position有什么值

一个长数组的处理阻塞了页面如何处理

淘宝秒杀倒计时如何保证倒计时的准确性

实现format函数

```
var origin =
(source:b', target: 'c'},
source a'. target:'b'}
{source:'c', target: 'd'}
J
format(origin);=>按顺序打印 abcd
```

 二面

讲了一下实习项目【无权限页面加载优化】引申到页面加载优化

为什么小图片使用base64编码

对webp有什么了解

http2有什么特点

http1.1支持服务器推送吗

react的hook,分别的功能和使用场景

react如何进行状态管理

setstate是异步还是同步更新

函数组件没有生命周期如何在挂载和卸载阶段进行操作

webpack的一个流程

webpack的treesharking

在ES6之前的一个treesharking

loader和plugin之间的差别

客户出现白屏如何排查

如果联系不上客户怎么办

前端监控是如何进行错误检测的

如何实现的虚拟列表

为什么要使用虚拟列表

为什么要自己写?有参考其他的库吗

算法:实现一个括号匹配(栈)

 三面

问了一些实习项目

react的diff过程

深度有限和广度优先的应用,有什么不同

为什么react用深度优先遍历

xss攻击和防范

实现一个autocontext组件如何设计,讲一下可能会出现哪些边界case和解决方法

输入框的过滤如何操作

做题:一个add(1)(2)(3);add(1,2,3)柯里化的题

三面的题没有写出来被叫停了,是做过而且不难的题,国庆回来就复习了一天,感觉面试没什么状态
全部评论
更新结果,问了hr结果挂了
点赞 回复 分享
发布于 2024-10-16 15:42 北京
救命佬 我也三面游戏后好几天无任何反馈 (非技术岗) hr也不回复
点赞 回复 分享
发布于 2024-10-16 12:49 浙江
抖音游戏是啥
点赞 回复 分享
发布于 2024-10-14 23:58 湖北
有后续么
点赞 回复 分享
发布于 2024-10-08 21:19 上海
抖音开放平台?哥们怎么一会飞书一会直播一会游戏的
点赞 回复 分享
发布于 2024-10-08 20:50 北京
是秋招吗😥
点赞 回复 分享
发布于 2024-10-08 18:38 浙江

相关推荐

虾皮前端一面总结一、八股文考察1. 箭头函数◦ 核心问题:需明确箭头函数特性(无this、arguments、prototype,不能用new)。◦ 未答关键点:◦ this继承自外层词法作用域,非构造函数因无prototype且new时无法绑定this。◦ new过程需创建实例、绑定this、返回实例,箭头函数无[[Construct]]内部方法。2. 性能优化◦ 问题:不熟悉相关知识,需补充学习(如防抖节流、SSR、CDN、懒加载等)。3. 浏览器内存与缓存◦ Local/Session Storage:数据存储于磁盘,读取时从内存缓存或磁盘获取(取决于是否常驻内存)。◦ 协商缓存:◦ max-age=0与no-cache区别:前者强制验证缓存,后者需服务器确认。◦ ETag与Last-Modified并存:前者更精准(文件内容变化),后者依赖时间戳(可能误判)。4. React Hook◦ 问题:对useMemo、useCallback、memo使用场景模糊。◦ 改进点:结合项目举例(如子组件高频渲染时用memo缓存,避免函数重复创建导致的重渲染)。二、代码题• 动态规划背包问题:用最少砝码数量组合目标重量,需明确状态转移方程(如dp[i] = min(dp[i], dp[i - w] + 1))。三、面试官交流1. AI看法:强调合理利用AI辅助解决复杂问题,提升效率。2. 性能优化建议:结合具体场景(如电商首屏优化、可视化图表性能),参考谷歌Lighthouse、Web Vitals等工具。四、改进方向1. 基础巩固:深入理解箭头函数原理、浏览器存储机制、HTTP缓存策略。2. 性能专题:系统学习优化手段,结合实际项目案例分析。3. React实践:梳理Hook使用场景,通过项目练习巩固(如列表渲染优化)。4. 算法训练:强化动态规划题型,掌握背包问题变种解法。
点赞 评论 收藏
分享
一、面试基本情况本次面试主要围绕 React 相关技术、流式传输以及算法与 React Hook 实现展开,包含技术原理问答和两道代码实现题。二、技术问题回顾与解答1. React Router 的实现机制React Router 基于 HTML5 的 history API 实现单页面应用的路由功能。它通过监听浏览器的 popstate 事件(当用户点击浏览器的前进、后退按钮时触发)以及手动调用 history.pushState()、history.replaceState() 方法来更新 URL 地址,同时不触发页面刷新。在 React 组件中,通过 BrowserRouter(基于 history API)、HashRouter(基于 URL 的 hash 部分,兼容性更好)等组件包裹应用,结合 Route 组件定义不同路径对应的渲染组件。当 URL 变化时,React Router 会根据当前路径匹配相应的 Route 并重新渲染对应的组件,从而实现页面内容的更新 。不过在本次面试中,我对这块知识掌握不够扎实,未能完整清晰作答。2. React memo 是做了什么React.memo 是一个高阶组件,用于对函数式组件进行性能优化。它会对组件的 props 进行浅比较,如果前后两次传入的 props 浅比较结果相同,就直接复用之前渲染的结果,不再重新执行组件函数,从而避免不必要的重复渲染。但需要注意,它仅对 props 变化进行比较,当组件内部状态(如通过 useState 创建的状态)变化时,即使 props 未变,组件仍会重新渲染。3. React Suspense 怎么实现的React Suspense 用于处理组件的异步加载情况,让开发者可以指定在异步操作(如数据获取、动态导入组件)进行时显示的加载状态。它通过在组件树中标记一个“等待”区域,当子组件中有异步操作未完成时,会先渲染 Suspense 组件指定的 fallback 内容(如加载动画),直到异步操作完成,再渲染实际的子组件内容。内部实现依赖于 React 的 Fiber 架构,利用 Fiber 的可中断、可恢复特性,在等待异步操作完成期间释放 CPU 资源,不阻塞主线程,提高应用的响应性能 。4. 流式传输相关讨论在讨论流式传输时,我提出可以在前端利用 Server-Sent Events(SSE)实现。SSE 是一种单向的、由服务器向客户端推送数据的技术,适合用于实时数据传输场景。同时,对于 JSON 数据的处理,采用流式解析会更加高效,比如在处理阶乘等数据量较大且逐步生成的场景下,流式解析无需一次性将所有数据加载到内存中,而是边接收数据边解析处理,减少内存占用,提升数据处理效率。三、代码题实现1. 大数相减(考虑负数结果)function subtractLargeNumbers(num1, num2) {function compare(num1, num2) {if (num1.length > num2.length) return 1;if (num1.length < num2.length) return -1;for (let i = 0; i < num1.length; i++) {if (num1[i] > num2[i]) return 1;if (num1[i] < num2[i]) return -1;}return 0;}const sign = compare(num1.split(''), num2.split(''));let larger = sign >= 0? num1 : num2;let smaller = sign >= 0? num2 : num1;let result = '';let carry = 0;for (let i = 0; i < larger.length; i++) {let diff = parseInt(larger[larger.length - 1 - i]) - (parseInt(smaller[smaller.length - 1 - i]) || 0) - carry;if (diff < 0) {diff += 10;carry = 1;} else {carry = 0;}result = diff + result;}while (result[0] === '0' && result.length > 1) {result = result.slice(1);}return sign < 0? '-' + result : result;}2. 实现一个可暂停、继续的倒计时 React Hookimport { useState, useEffect } from'react';function useCountdown(initialTime) {const [time, setTime] = useState(initialTime);const [isRunning, setIsRunning] = useState(true);let intervalId;useEffect(() => {if (isRunning && time > 0) {intervalId = setInterval(() => {setTime(prevTime => prevTime - 1);}, 1000);} else {clearInterval(intervalId);}return () => clearInterval(intervalId);}, [isRunning, time]);const start = () => {setIsRunning(true);};const pause = () => {setIsRunning(false);};return {time,start,pause};
查看6道真题和解析
点赞 评论 收藏
分享
评论
6
32
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务