首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
席爷赐你一死
门头沟学院 运维开发工程师
发布于北京
关注
已关注
取消关注
@zebwu:
字节抖音前端一二三面经(已offer
22 届,垫底 211 CS 本科。 有两段前端实习经历,第一次实习在腾讯,大二暑假去的,然后大三上学期给一家美国硅谷的创业公司远程打工,现已离职。 一面 总时长 62min 1. 自我介绍 2. 为什么前把项目的状态管理方案迁移到 React Hooks 我讲了 Render props 嵌套的问题,Context 导致组件不必要重渲染的问题,为什么没用 redux ,redux 的负担。最后讲了 React Hooks 的好处 3. React 有那些组件间通信的方式? 我讲了这些 父传子 props, 父传子 callback 后子组件通过 callback 更改父组件状态 Context redux,顺便提了 react-redux 的 connect 原理 组件间共享同一个 hook 3. Context 导致的子组件不必要重渲染问题怎么解决? 原因是 Context 子组件内容每次都是 React.createElement 创建的对象,引用是会变的,即使内容完全没改变。 解决方案:将子组件通过 children props 传进来,保证引用不变,变更的只是 props.children 这个对象的属性。 4. 了解 React Fiber 吗? 我讲了 Stack Reconcile 时代的问题(递归不可中断更新,性能问题,没有任务优先级)。Fiber 基于链表做可中断的更新,并且讲了 React 放弃 requestIdleCallback 而选择自己编写 scheduler 的原因。 5. 进程和线程的区别? 讲了各自的定义和区别之后,我还详细说了 Chrome 为什么采用多进程架构(安全沙箱隔离,页面关闭后释放地址空间,减少内存碎片,崩溃问题)。 6. 进程间通信有哪些方法? 匿名管道,有名管道,信号量,消息队列,socket 7. JS 异步解决方案? 我讲了 callback 以及它的问题(callback hell 以及错误处理麻烦),Promise 的好处(链式调用,错误统一.catch() 处理),然后提到 async / await ,讲了协程机制,async / await 底层的 generator 实现,隐式的 Promise。 8. 事件循环? 常规题,讲宏任务微任务 UI 渲染,不多赘述。 9. 跨域有哪些方案? 我提了 jsonp , cors,并且详细说了简单请求和复杂请求,预检请求,还有 iframe domain.name ,nginx 反向代理 10. 手写 jsonp 这里没写好,我 jsonp 实际上没有真正使用过。自己实践都是用 cors 做的。。。 11. 水平垂直居中怎么实现? 讲了 flex,absolute + translate,inline-box + vertical-align: center + text-align: center, 顺便扯到了 table 布局的性能问题。 12. JS 的数据类型 13. document.querySelectorAll('div') 返回的是一个什么类型?如何遍历它? 它是一个对象,是一个类数组。通过 迭代器遍历,数字索引遍历,for of 语法糖,顺便提了 for of 语法糖的实现。 1***委托?常规题 15. event.currentTarget 与 event.target 分别是什么? 16. 这个的输出? var a = 10; (function (){ console.log(a); a = 5; console.log(window.a); var a = 20; console.log(a); })() 答:undefined, 10, 20 17. 算法题,特征数据转成一个树。 太紧张了😨,只写出来最简单的情况。不过说了下思路。 18. 反问环节 二面 总时长 54 min 1. 自我介绍 2. 什么时候开始接触前端的? 3. 先聊点基础吧,说一下 OSI 网络模型,并且每层的协议? OSI 应该是七层的那个,我当时说的是 TCP/IP 四层模型,说了这些 应用层:http, dns, ftp, smtp, pop3; 传输层:TCP UDP ; 网络层:IP, RIP, OSPF 数据链路层:ARP 不过面完查了下,RIP 和 OSPF 应该是应用层协议。 4. 聊聊 TCP 和 UDP 的区别? TCP 面向连接,UDP 尽最大努力交付,无连接 TCP 首部 20 字节,UDP 首部 4 字节 TCP 是可靠传输,详细讲了 TCP 保证可靠传输的机制 还详细说了 TCP 慢启动,滑动窗口,重传机制 5. 我们正在使用的面试视频是采用什么协议实现的? 答:UDP,因为要降低延迟,UDP 快首部开销小,并且视频通话容忍少量数据的丢失。 6. https 的 s 是什么? s 是 ssl,然后详细讲了 ssl 握手的过程。并且详细说了浏览器认证数字证书合法性的过程(证书链向上查找合法 RootCA 记录),还提到了 CRL (证书吊销列表)的更新不及时可能导致的问题 ,由此扯到了 OSCP 在线证书检查协议询问 RootCA。 7. 302 和 304 的区别? 302 暂时重定向,并且讲了 302 网站劫持,影响搜索引擎排名的问题。304 Not Modified,协商缓存内容没有改变。同时聊了下缓存机制,强缓存未过期直接返回 200 并且不会向服务端发出请求。 8. 手写代码,基于链表实现 push 与 shift。 9. 聊项目?为什么技术选型选择了 Umi + Dva? 讲了项目具体的历史包袱,然后讲了 Umi 的设计思想及它解决的问题,并且刚好符合那个项目的具体场景,内容很长不赘述(。 至于 Dva 部分,我首先讲了 React 原生的状态管理机制的问题,Context 导致子组件不必要重渲染的开销,然后切入到 redux 将 redux 的思想(因为 Dva 是基于 redux 的一种优化解决方案)。最后引申到 Dva 的设计思想,解决了 Redux 的哪些痛点。中间我还扯了 redux-saga 的实现以及 dva 是如何集成 saga 的,还扯了协程的问题。这里内容也很长很细不赘述。建议大家针对这种关键性的问题好好准备并且了解整个链路的思想与原理,便于在面试的过程中表现自己的竞争力。想了解 react 相关的设计思想的同学可以去知乎搜「张立理」老师的文章,他的文章给了我很多启发与收获。 10. 你在这个项目中推广了基于 GitFlow 的 CI / CD 上线流程,能详细说说整个过程吗? 从 develop 分支 checkout 到 feature 分支进行开发,所有 commit 到远程库的代码都会跑质量流水线(lint 与 test cases),然后 feature 开发完之后 merge develop 前有 MR 检查,MR 检查除了跑质量流水线外还要生成一个线上的测试地址,以便检查。MR develop 后,等到要发板时,merge master ,同样 merge master 之后 跑质量流水线和发布测试地址,最后打 tag 发版,跑部署流水线构建发布到 OSS。 不清楚的同学可以去看看 Git Flow ,还有流水线的设计相关的书籍。推荐《持续交付2.0 业务引领的DevOps精要》,乔梁老师讲得很好。 11. 线上的代码放哪?答:OSS + CDN 12. 如何保证发布后 CDN 代码是最新的? 首先讲了下 CDN 的原理,然后给每个文件打包输出时加上 [contentHash], 文件内容变化时文件名必定变化。顺便扯了下 [hash] 和 [contentHash] 的区别。然后 index.html 不要设置缓存,因为打包后 index.html 内引用的 scirpt url 发生了变化(因为 contentHash),因此可以知道最新的 js 文件。并且 CDN 配置了监听 OSS 的更新事件,触发回源更新。 13. 有没有为这个项目做什么优化? 首先从网络讲起,讲了 http 1.1 升级到 http 2 的优化。(使用同一个 TCP 连接,HOLB 问题优化,Server Push,HPACK) 还提到了动画页面对动画的性能优化,rAf 还有单独建立图层保证 reflow 不影响其它元素,以及 GPU 加速。 14. 有对 SPA 做什么特别的优化吗? 讲了基于路由的 code splitting / lazy loading,还有基于某些需要打开 modal 才会使用但又很少使用的模块做了 dynamic import 然后提到了构建时的 Tree shaking,首先讲了 Tree Shaking 的原理:harmony import / export 标记,然后交给 terser 进行提出,还提了下 sideEffect。然后讲 webpack tree shaking 的配置。还有将了下如何编写易于 Tree shaking 的代码(要将每个工具函数单独 export ,不要集成为一个 class ,tree shaking 的最小单元是一个对象,它不能识别一个对象中哪些函数是否需要 15. 你项目使用 TS 写的,那你知道 TS 如何编译到 ES 5 代码的吗? 思考了十秒钟,一开始是懵的。突然想通,这不就是问 babel 原理么。然后就将 TS 的词法分析,聊了下 DFA 。然后就是基于文法做语法分析,构建语法树。后面把 AST 交给 Babel。Babel 遍历 AST,在遍历的过程中根据每一个 AST Node 的类型,交给 Babel 对应的 Plugin,在这个切入点引申到 Babel 的插件机制。讲了下插件的 visitor 的作用。最后转换程 ES 5 的 AST,同时在这个过程中能得到 SourceMap。然后将 ES 5 的AST 还原成代码,即得 ES 5 代码。 16. 如果 TS 代码编译的过程中,遇到了一些高级的特性,ES 5 并不支持怎么办? 引入对应特性的 polyfill 17. 反问环节 问了下组里的业务,还有面试官的前端经历。 三面 1. 自我介绍 2. 为什么从上一段实习离职? 3. 大二去实习怎么平衡学业和工作的关系? 4. 项目中提到的数据图表渲染优化是怎么做的? 根据数据特征实现 sampling 算法取样,只需要取关键点,重复的无变化的数据剔除,减少渲染数据量。 5. 简历中有提到你在学校团队中推广落地了 Code Review ,你具体是怎么做的? 先找团队中技术好有影响里的几位同学,单独做一个小项目,先在这个小项目内应用 Code Review。先让这些同学熟悉 Code Review 的流程,以及 Code Review 能给他们带来什么,让他们认识到 Code Review 的价值,能够带来好处之后,再在大项目中,联合这些同学一起推广 Code Review 6. 如何评价 Code Review 质量 ? 抽检 CR ,看评论内容是否有意义。看 Request For Changes 之后的代码修改是否有经过设计思考。CR 是一个相互学习的过程,如果看到双方对某个设计问题有所争论,那也便是好事。 7. 你认为什么样的代码是好代码 讲了一些 OOP 封装复用的思想,SOLID 设计原则。也提了实际业务场景与代码提前设计的矛盾。 8. 聊简历中的命令行工具设计?// 经历强相关,不便分享~ 9. 怎么评价这个工具推广的效果? 10. 使用命令行工具将需求单状态实现自动化更新的话?会不会带来一些不好的影响? 11. 手写代码,写 timeFormat 函数。包含占位符解析 如:timeFormat(new Date().getTime(), ‘YYYY-MM-DD hh:mm’); // 2021-02-26 14:02 思路:一遍扫描。用词法分析的思想,YYYY MM DD 这些就是关键词。识别到关键词替换成对应的值。 12. 写上面这题过程中,遇到了 string 类型的不可变性问题。顺便谈下可变与不可变 13. 手写代码:实现一个随输随搜的搜索框 首先讲需要注意哪些点:1. 触发搜索防抖 2.响应内容保证按需返回 3. 服务端限定处理的关键词长度 ,只去前面 n 个。因为太长的关键字会使得 Elastic Search 效率低下 14. 除了这些方面呢?用户体验方面上你会怎么设计? 常搜索的关键词做缓存,以后输入如果匹配上了历史搜索,历史搜索关键词的排序会更靠前。 搜索框的 outline 交互。还有搜索框的 a11y 优化,以方便特殊人士使用 默认 focus,减少用户一次点击 对违法词汇搜索的结果信息过滤 根据用户特征与地理位置返回特定的结果(因为我经常使用 Google,Google 就是这么做的 15. 还有吗?从前端输入到服务端性能整个链路角度来看,有什么可以优化的点吗?如何降低用户操作的折损? 这个问题问出来的时候,脑子里就认为这是一个商业化实验数据相关的问题。 16. 我们在京东上搜某些商品,为什么会在抖音上推送相关的内容呢?这是怎么实现的? 讲了广告联盟的思想,数据买卖与共享 17. 跨域怎么收集用户数据? 18. 跨域不能共享 Cookie 但是可以知道用户的唯一标识符,通过用户唯一标识与同时接入的第三方平台实现数据共享。 19. 怎么最终用户?有哪些常用的标识? IMEI,MEID,ICCID,手机号 20. 手写代码:节流,防抖 前面问了太多意料之外的东西,导致我很紧张。防抖节流怎么写都想不起来了😭 21. 入职时间,实习多久? 22. 反问环节 面试过程体验很好,面试官善于引导,并且问题都很有深度。
点赞 47
评论 27
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
昨天 11:02
门头沟学院 Java
年纪轻轻就有了三个儿子
大家在大一刚入学的时候都比较拘谨,都比较尊重彼此,等玩熟了后,就放飞自我了脏话满天飞,一起熬夜打游戏,互相诋毁游戏水平,点个外卖都要过来分一杯羹,平时作业互抄,上课帮忙签到。大学四年就跟舍友混得最好(直到现在我还认不清班里的一些人但毕竟天天生活在一起,还是有过不少的小矛盾的,只能说遇到这种情况就得互相包容,要不然早就住不下去搬走了
你跟室友的关系怎么样?
点赞
评论
收藏
分享
昨天 11:16
长安大学 产品经理
面试官能不能不要这么抽象啊?
“你五年后想做什么?”我一点都不知道。我没想过自己能活这么久,而且我们现在正处于美国的最后一季。五年?希望到时候,我已经中了彩票,再也不用回答这些愚蠢的问题了。我们为什么要雇你? 以下是我为什么对这个问题感到火大的原因。你邀请我来面试。你已经看过我的简历了。你在已经确定了面试机会之后,还要让候选人证明自己。候选人很难回答这个问题,因为他们根本不知道你们的招聘决定是怎么回事。候选人做什么都无法说服你。作为招聘经理,你早就已经决定了。为了这份工作而乞求只会让你看起来很可怜。
你最讨厌面试问你什么?
点赞
评论
收藏
分享
06-03 16:55
广州工商学院 单片机
简历
各位大佬,这个简历找实习都拒绝了,哪里有问题还是说哪里可以加强修改
码砖:
求职岗位要突出,一眼就能看到,教育背景放到最后,学校经历没那么重要,项目要重点突出
点赞
评论
收藏
分享
07-16 15:29
北京外企德科人力资源服务上海有限公司_人事主管
作为hr,遇到的候选人越来约颠了……
每天都会遇到各种各样的人才,我要用魔法打败魔法🪄啊哈哈😂
机械打工仔:
以后他就明白6点能准时下班有多么珍贵
点赞
评论
收藏
分享
不愿透露姓名的神秘牛友
07-24 12:26
感觉秋招好难
毫无动静
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
都是 dirty work,为什么别人的简历上就能言之有物🤔
1.0W
2
...
滴滴提前批
7158
3
...
实习都是CRUD怎么包装
6743
4
...
百度提前批一面(秋招第一场也估计是压力最大的)
5113
5
...
【07.29更新】能救一个是一个!26届毁意向毁约裁员黑名单
4735
6
...
秋招首凉-腾讯TEG 云架构平台提前批
4699
7
...
干活最少的实习生因为长得漂亮转正了
2981
8
...
团孝子启动ing!
2786
9
...
字节懂车帝 后端实习一面
2423
10
...
面试劫匪??????
2261
创作者周榜
更多
正在热议
更多
#
26届的你,投了哪些公司?
#
18076次浏览
212人参与
#
我对___祛魅了
#
28380次浏览
273人参与
#
中兴秋招
#
194853次浏览
2174人参与
#
你最讨厌面试问你什么?
#
12160次浏览
175人参与
#
你跟室友的关系怎么样?
#
3213次浏览
60人参与
#
工作中哪个瞬间让你想离职
#
46559次浏览
409人参与
#
简历上的经历如何包装
#
11846次浏览
386人参与
#
你遇到最难的面试题目是_
#
4477次浏览
85人参与
#
如何快速融入团队?
#
10092次浏览
121人参与
#
和同事相处最忌讳的是__
#
13815次浏览
139人参与
#
通信/硬件求职避坑tips
#
86022次浏览
868人参与
#
什么样的背景能拿SSP?
#
15662次浏览
123人参与
#
毕业后不工作的日子里我在做什么
#
190363次浏览
1633人参与
#
应届生应该先就业还是先择业
#
124939次浏览
695人参与
#
字节跳动工作体验
#
458490次浏览
4625人参与
#
如何排解工作中的焦虑
#
190626次浏览
1958人参与
#
多益网络求职进展汇总
#
31033次浏览
138人参与
#
总结:哪家公司面试体验感最差
#
63298次浏览
287人参与
#
元戎启行求职进展汇总
#
36025次浏览
278人参与
#
我和mentor的爱恨情仇
#
61846次浏览
379人参与
#
实习生活中那些难忘的瞬间
#
164431次浏览
2442人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务