# 字节 前端一面面经

  • 前端学习是怎么学的?
    • 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 啥的没细说

复习 -> Web 开发的安全之旅

# CSS 相关

  • CSS 选择器优先级(八类,只说了 4 类,其他的想不起来名字 - -CSS 方面显然较弱)
    • 类型、类和 ID 选择器、标签属性选择器、伪类与伪元素、运算符、内联样式
    • 内联样式 > ID > 类 > 类型…… 看看 CSS 选择器
  • CSS 垂直水平居中(答得也不太好,有必要去恶补 CSS 了)
    • flex
    • margin auto

# JS 相关

  • 经典基本数据类型
  • 如何判断一个变量类型
    • 我答的 typeof 加一些特殊限制(后面想了想对哦还有 Object.prototype.toString()
  • 原型链讲讲
  • 一道题 写出 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。
  • 对我的评价 / 可以改进的地方
    • 基本的了解都是有的,不过有些知识点不够细,深挖的东西还需要好好补一下(还是写太少)
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

cos 微信支付

微信支付

cos 支付宝

支付宝