字节跳动前端面经

本文是一位应聘者分享的字节跳动前端面试经历,包括一面、二面和三面的主要问题及回答。面试涵盖了Vue的双向绑定、生命周期、调试技巧、综合知识、数据结构题目、WebSocket、项目经验等多个方面,同时也讨论了网络知识、操作系统、浏览器渲染等技术点。面试者反思了自己的不足,认识到前端基础知识的重要性。
摘要由CSDN通过智能技术生成

已经过去8个月了, 勉强回忆起了大部分的内容。我的面试偏话痨风, 时常带节奏, 反面教材, 适度参考。

一面

一面是交叉面, 一个超级有气质的小姐姐hhh, 瞬间对头条充满了憧憬。 一上来先做了一下自我介绍, balabalabala~

问题1: 签到题

  1. Q: vue的双向绑定是怎么实现的?
  2. A: 旧版本是defineProperty, 新版本是proxy。 defineProperty可以设置对象的一个属性的setter和getter, 以及是否冻结等等, 通过这样的方式来给赋值运算注入更多的操作, 比如触发更新事件。
  3. 马后炮: 大概看过defineProperty的API, 目测是通过getter实现触发更新的, 更多细节还真没有看过代码。 还有proxy也没有研究。
  4. Q: vue的生命周期?
  5. A: 马马虎虎答上来了, 半年多没用vue, 忘了~

问题2: 真没想到会问这个

  1. Q: 如何debug?
  2. A: console.log打日志,但是一般效率比较低下。 然后主要是打断点。
  3. Q: 怎么打断点排查?
  4. A: 如果涉及网络请求, 要先排查是否是前端问题, 是否请求错误或者返回的数据格式不符合预期。 打断点的话有个二分打断点的思路很巧妙。 但其实主要是在整个页面的主逻辑打断点, 看进入各个外层的函数的参数 以及它们的返回值是否符合预期, 发现问题后进一步再看这个函数/调用栈内的细节。 这样一层层定位到问题。

问题3: 综合知识

  1. Q: 知道网页从打开到展示的全过程吗?
  2. A: 首先是DNS解析, 这个过程是先访问本地的DNS服务器, 如果有缓存会直接返回对应域名的ip地址, 如果没有缓存会先到对应的根DNS服务器, 比如.com的DNS服务器, 查询到对应的域名的DNS服务器, 这样迭代查询之后得到ip地址, 然后访问对应的端口, 如果没有写, 默认是80端口。 这时候服务器上的http服务器, 比如nginx,监听着这个端口, 接到请求后根据命中的host的规则, 一般会再转发给node.js的服务, 或者php等服务的端口去处理后端路由, 静态资源就可以直接返回了。 这里就根据路由规则去命中, 如果都没有命中一般会配置默认规则, 走到统一的404错误页。 到了具体的前端页面之后, 还会有前端路由, 类似的机制去渲染页面。 前端的head里的css、js会阻塞渲染, 然后渲染页面
  3. 马后炮: 没有好好准备, 应该先讲整体的步骤, 再细说, 页面渲染的部分才是前端的重点, 反而也没有答好。 再补一下浏览器渲染的相关知识比较好。

问题4: 写道题

  1. Q: 写一道数据结构题吧, 给一个二叉树和一个目标值, 写一个函数返回这个树中是否有一条路径等于目标值。 ()给的例子节点都是正值)
  2. A: 路径的话就是从树根到任何一个结点了, 包括非叶子结点? 结点值会出现0或者负值吗?
  3. Q: 不会。
  4. A: 有些紧张, 不追求最优解了, 写了一个递归深搜然后剪枝, 递归调用返回true时返回ture, 否则返回false。 遍历到某个节点的时候路径值等于target就返回true, 这样逆着调用栈就会一直弹出true, 终止函数。 如果到底某个节点的路径值大于目标值, 则直接返回false剪枝, 不再往下搜索(太懒了, 代码略)。 大概写了15分钟&
  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值