前端工程师字节跳动面试

本文分享前端面试中关于前端开发阶段划分、网络缓存原理、JavaScript进阶及笔试题解答。深入探讨浏览器缓存策略和JS原型链理解,同时揭示如何应对面试中的技术挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.自我介绍

这个我从学校、实习、项目介绍的,然后面试官问了很久的项目

二.开始问题

2.1 你学前端有哪几个阶段?

这个我答了从学校,到自学,从浅学到深入相关的。

2.2 你为面试做了哪些准备?

我复习了HTML/CSS/JS/VUE/NODE/网络。(但感觉不能这样说)

2.3 说说网络缓存吧

我答得下面这段:

浏览器第一次加载资源,服务器返回200,浏览器从服务器下载资源文件,并缓存资源文件与response header,以供下次加载时对比使用;下一次加载资源时,由于强制缓存优先级较高,先比较当前时间与上一次返回200时的时间差,如果没有超过cache-control设置的max-age,则没有过期,并命中强缓存,直接从本地读取资源。如果浏览器不支持HTTP1.1,则使用expires头判断是否过期。如果资源已过期,则表明强制缓存没有被命中,则开始协商缓存,向服务器发送带有If-None-Match和If-Modified-Since的请求。服务器收到请求后,优先根据Etag的值判断被请求的文件有没有被做修改,Etag值一致则没有修改,命中协商缓存,返回304;如果不一致则有改动,直接返回新的资源文件带上新的Etag值并返回200;如果浏览器收到的请求没有Etag值,则将if-Modified-Since和被请求文件的最后修改时间做比对,一致则命中协商缓存,返回304;不一致则返回新的last-modified和文件并返回200

2.3.1 那你说说服务器是如何知道是哪个请求需要缓存呢

这个我到现在也不知道。

2.4说说JS让你印象最深刻的吧

说了原型和原型链,然后可以实现继承(举了例子)。(太多了,在这儿我就不写了)

三.笔试

3.1 笔试第一题

const shape = {
  radius:10,
  Perimeter: function () {
    return this.radius * 2
  },
  k: radius * Math.PI * 2
}
(Perimeter => Perimeter()) (shape.Perimeter)    // 报错,箭头函数没有this
(s => s()) (shape) // 报错,shape不是函数,不能用shape() 

3.2 笔试第二题

JS实现两个字符串相加(无限大,并且两个数为字符串),这个题拿到之后,我一直在把字符串转为数字去相加,面试官说不能这样做。 建议看看这个博主的

js实现两个字符串数字相加(大数相加)_段郎的博客-优快云博客_两个字符串数字相加怎么实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值