# 字节 前端一面面经
- 前端学习是怎么学的?
- MDN、训练营、红宝书等等…… 系统性的学习了俩月吧
# 网络相关
- 浏览器输入 url 过程
- 解析 url 在本地 host 文件查询找到 DNS 解析得对应 IP 地址等
- 三次握手建立 TCP 连接,HTTPS 协议的话还要进行 TLS 握手
- 服务端接受请求后返回响应
- 浏览器根据响应进行解析生成 html 树和 CSSOM 树(DOM 树!记错了!!)
- DNS 查找过程展开说说?
- 挖坑 - - 我答得现在本地的 host 文件查询,若有对应 IP 就直接返回,然后在路由器查询,然后再去 DNS 服务器查询
- 那对根服务器的一个了解不是很多是吧 (嗯嗯,寄)
- TCP 连接
- 面向字节流,提供可靠的传输服务,需要三次握手
- 展开三次握手讲讲(巴拉巴拉巴拉,挖坑 ×2)
- 你提到了两次握手不安全,原因是啥
- 两次握手的话服务端不知道客户端收到报文的能力是否正常
- 最后一次握手讲一下(前边没说清楚,不太记得了,淦,回头开一篇博客详细讲讲)
- TCP 和 UDP 区别
- UDP 无连接、不可靠,传输数据更快
- UDP 的应用场景多为丢包不重要的
- 还有其他的吗?(……)
- TCP 拥塞控制了解过吗,讲讲
- 拥塞窗口、超时重传、慢开始和快重传(坏了,快重传、快恢复这里混淆了)
- 应该是慢开始、拥塞避免、加性增和减性乘、快重传、快恢复
# HTML 相关
- DOM 树和 CSSOM 树构建过程(前面挖的坑)
- 加载 JS 资源、CSS 资源对页面有什么影响吗(阻不阻塞)
- JS 资源,讲了 async 和 defer
- CSS 资源是在啥时候解析的,会不会阻塞 DOM 结点的构建?(寄,我觉得是并行的)
- 不会阻塞解析还是渲染?
# 前端安全这一块的了解?
- XSS、CSRF、SQL 注入、dos 和 ddos
- 预防措施展开讲讲(处理用户输入、转义,不盲目信任用户输入)
- CSRF 咋防?(只知道要 HTTPS,语无伦次了,复习!)
- 跨域讲讲
- 跨域解决方法?
- 主要讲了讲 CORS,简单请求和非简单请求
- 讲讲简单请求和非简单请求,预检请求
- 其他 jsonp 啥的没细说
- 主要讲了讲 CORS,简单请求和非简单请求
复习 -> Web 开发的安全之旅
# CSS 相关
- CSS 选择器优先级(八类,只说了 4 类,其他的想不起来名字 - -CSS 方面显然较弱)
- 类型、类和 ID 选择器、标签属性选择器、伪类与伪元素、运算符、内联样式
- 内联样式 > ID > 类 > 类型…… 看看 CSS 选择器
- CSS 垂直水平居中(答得也不太好,有必要去恶补 CSS 了)
- flex
- margin auto
# JS 相关
- 经典基本数据类型
- 如何判断一个变量类型
- 我答的 typeof 加一些特殊限制(后面想了想对哦还有
Object.prototype.toString()
)
- 我答的 typeof 加一些特殊限制(后面想了想对哦还有
- 原型链讲讲
- 一道题 写出 p 与 Person 的关系(尽可能多) ↓我的回答
function Person() {} | |
let p = new Person(); | |
// 写出 p 与 Person 的关系(尽可能多) ↓我的回答 | |
console.log(p.__proto__ === Person.prototype); // true | |
console.log(p.constructor === Person); // true | |
console.log(Person.prototype.__proto__ === Object.prototype); // true | |
console.log(p instanceof Person); // true | |
console.log(p instanceof Object); // true |
- 又一道题,看输出
function Foo() { | |
getName = function() { | |
console.log('1'); | |
} | |
return this; | |
} | |
Foo.getName = function() { console.log('2'); } | |
Foo.prototype.getName = function() { console.log('3'); } | |
var getName = function() { | |
console.log('4'); | |
} | |
// 判断以下输出 | |
Foo.getName(); | |
getName(); | |
new Foo().getName(); | |
getName(); |
- 答案是 2 4 3 1 捏
# 代码题
二叉树层序遍历(秒)
# 反问
- 部门业务 / 技术栈(面试官答得可详细)
- 影像方面,字节系的影像 APP,剪映、轻颜等,不止涉及到页面还有跨端的一些项目,内部还有跨端框架要研究,还有 B 端的一些东西,安全方面还有可能用 go,前端技术栈主要是 React+Node+TS。
- 对我的评价 / 可以改进的地方
- 基本的了解都是有的,不过有些知识点不够细,深挖的东西还需要好好补一下(还是写太少)