字节 国际电商 二面

面试岗位:前端开发 base 珠海杭州

面试时间: 8.26

时长:50min

问题

1. 自我介绍

2. dns寻址过程

3. TCP三次握手 四次挥手

4. UDP TCP连接

5. 网络分层五层分别是?

6. 浏览器响应码 304

7. 强缓存和协商缓存

8. etag和last-modify区别

9. Cache-Contral:max-age和Expires的区别,http/1.0用哪个,http/1.1用哪个,为什么要替换这个字段

10. 离线缓存、启发式缓存

11. 浏览器响应码 403

12. 什么是同源策略,如何解决跨域,jsonp的原理是什么,是标签允许跨域还是某个属性允许跨域?

13. 浏览器渲染机制

14. DOM树和CSSOM树是同步渲染的吗?

15. DOM、CSS和JS的相互阻塞关系

16. 下面这段代码会执行几次回流

div.style.width = 10;
div.style.height = 10;
console.log(div.offsetWidth);
console.log(div.offsetHeight);

17. 下面这段代码的输出结果

var name='window'
var obj={
  name:'obj',
  say(){
    console.log(this.name);
  },
  say1:()=>{
    console.log(this.name);
  }
}
obj.say()
obj.say1()
var fn=obj.say
var fn1=obj.say1
fn()
fn1()

18. 箭头函数和普通函数还有没有其他区别

19. 代码题:并发控制

// fetch已实现,可直接使用
// 向url发起请求,返回一个Promise
// fetch(url:string)=>Promise

// 请你实现一个函数,控制并发请求数量,接受两个参数
// urls:string[]  待请求的url
// k:number  并发请求数量

都是八股文,整体难度不大,手撕应该也是看到的面经里面最简单的

还是裸面,下午3点20面完,3点35 hr反馈二面通过,约了下个月的三面

微信支付转正答辩表现也还不错(ld反馈被大老板夸了),好像有机会

许愿好事将至!!!

#字节跳动##秋招##面经#
全部评论
2.用户输入域名,浏览器查询本地dns缓存,本地dns服务器查询,根域名服务器查询,顶级域名服务器查询,权威域名服务器返回ip地址 3.三次握手:客户端发起连接请求,服务端接收到客户端发起的syn请求后,向客户响应syn+ack,客户端会返回ack确认,服务端收到第三次握手的ack后连接成功。四次挥手:客户端向服务端发送FIN发起断开连接请求,服务端收到客户端的请求,发生ACK给客户端告诉客户端我收到了你的请求,服务端发送FIN给客户端请求断开连接,客户端发送ACK给服务端,断开连接 4.他们都是传输层的协议,tcp是面向连接的,提供的是可靠的传输,传播速度相对较慢,适合需要高可靠性的场景,比如网页浏览、邮件、文件传输等。udp是面向数据报文的,不能保证传输的可靠性,传播速度比较快,适合视频、实时游戏等。 5.物理层,数据链路层,传输层,网络层,应用层 6.这个是在协商缓存的时候如果资源未改变就返回304 7.都是浏览器的缓存策略,先去看有没有命中强缓存,通过cache-control或者expires来看,如果失效了就去看有没有命中协商缓存,通过etag或者last-modified来看 8.tag是资源标识符,文件改变的时候,etag也会改变,更准确;last-modified是上次文件修改时间,不够准确 9.Expires是1.0,是一个具体的过期时间点(GMT时间),告诉客户端资源何时过期,可能受到客户端和服务器时钟偏差的影响不准确;cache-control是1.1,相对于资源被请求的时间,更准确 11.权限不足 协议域名端口号必须相同,proxy、jsonp、nginx、cors,原理是利用script标签的src属性来允许跨域请求数据 解析html构建dom树,css构建cssom树,dom和cssom合并成render树,进行布局、绘制,当页面内容变化时候,发送回流重绘 不是,css的加载和解析有可能会阻塞dom渲染 Css可能会阻塞DOM的渲染;Js会阻塞dom的解析(如果不用async或者defer);Css可能会阻塞js的执行(如果js依赖css样式);Js不会阻塞css的加载 16.1次? 17.‘obj';'window';'window';'window' 18. 箭头函数没有自己的this,不能做构造函数,没有arguments对象,但可以使用剩余参数来代替
5 回复 分享
发布于 08-27 15:55 浙江
我也面这个了 直接挂我
1 回复 分享
发布于 08-26 17:34 上海
不问项目吗?都整八股?
点赞 回复 分享
发布于 08-26 20:44 上海
输出是obj,window,window,window
点赞 回复 分享
发布于 08-27 10:58 湖北
佬,16题是几次啊
点赞 回复 分享
发布于 08-27 13:33 北京
大佬,离线缓存、启发式缓存怎么回答呀
点赞 回复 分享
发布于 08-27 15:12 浙江
几天出结果呢
点赞 回复 分享
发布于 08-28 16:27 广东
tql佬
点赞 回复 分享
发布于 09-01 09:41 陕西

相关推荐

实现前端代码的持续集成和持续部署可以通过以下步骤来完成:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=07d53be4cd034a4ab270d500feebcc8d版本控制:使用像Git这样的版本控制系统管理您的代码。这将允许您跟踪更改、协作和恢复到之前的版本。自动化构建:使用构建工具(例如Webpack、Grunt或Gulp)来自动化构建过程。这些工具可以压缩和合并文件,处理依赖关系,并优化您的前端资产。自动化测试:编写自动化测试用例,包括单元测试、集成测试和端到端测试。这些测试可以帮助您在代码更改时发现问题,并确保您的应用程序在不同环境下的正常运行。持续集成:使用像Jenkins、Travis CI或CircleCI这样的持续集成工具来自动化构建和测试过程。每当有新代码推送到版本库时,这些工具将自动构建和运行测试。代码部署:使用自动化部署工具(例如Ansible、Docker或Kubernetes)将您的代码部署到生产环境中。这些工具可以帮助您简化部署过程并确保一致性。监控和反馈:设置监控系统以监测您的应用程序的性能和稳定性。这样,您可以及时发现并解决潜在问题,并改进用户体验。请注意,实现持续集成和持续部署可能需要一些配置和设置,并可能因项目的特定需求而有所不同。因此,建议您根据您的项目和团队的需要进行适当的调整。
点赞 评论 收藏
分享
24 71 评论
分享
牛客网
牛客企业服务