Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

字节腾讯面经 #11

Merged
merged 1 commit into from
Apr 28, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
153 changes: 153 additions & 0 deletions 前端/2019-12 字节 泽明.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
> * 面试部门:字节跳动-一个游戏有关的部门,没问太清楚
## 一面
> * 时间:2019-12-11
> * 方式: 视频面
> * 面试时长:60分钟
### 自我介绍
说了自己是通过什么途径学习前端的,平时经常做笔记和写博客,做过几个项目,大二进入IT组织主啊哇部落,做了负责人,平时在部落里怎么交流
(下面不再重复)
### 1. 介绍以下你自己的XXX项目(这里HR选了我三个项目中的一个)
### 2. 实现继承
```javascript
function Animal(){}
function Dog(){}
```
### 3. 以下是怎么输出的
```javascript
setTimeout(()=>{
console.log(1);
},1000)
setTimeout(()=>{
console.log(2);
},1000)
setTimeout(()=>{
console.log(3);
},1000)
```
### 4. 实现下面这个类
```javascript
new Queue()
.task(1000,()=>{
console.log(1);
})
.task(2000,()=>{
console.log(2);
})
.task(1000,()=>{
console.log(3);
})
.start()
```
执行start后第一秒输出1,第三秒输出2,第四秒输出3,如果没有执行task,则执行start不做任何处理
### 5. 二叉树中找出两个节点之间的距离
节点数据结构{depth,parent,leftChild,rightChild}
### 6. Vue虚拟DOM的作用
### 7. Vue的响应式/双向绑定怎么实现的
### 8. websocket的工作原理(指内部的工作原理,长连接,轮询那些)
### 9. 使用websocket时断开怎么办
### 10. 如果websocket断开,无法实现聊天功能怎么处理(这是因为我项目里面有聊天)
### 11. 在文件上传时视频过大怎么处理(也是因为我项目里面有这个功能)
### 12. css居中方法
### 13. position 有哪些 区别是什么 哪些会脱离文档流
### 14. XSS攻击和CSRF攻击
### 15. 冒泡和捕获
### 16. 异步执行里面的微任务和宏任务了解吗,哪些是微任务哪些是宏任务
### 17. 微任务中再写入一个微任务是在这次event loop里面执行还是在下一次
### 18. 箭头函数和匿名函数的区别
### 19. HTTP和HTTPS的区别
### 20. 了解ES6吗,有什么新特性
### 21. 说一下let const var的区别
> 怎么做到让const声明的对象里面的属性也不可变
### 22. 箭头函数使用bind可以修改this指向吗
### 23. vue组件间怎么通信


一开始还问了我有没有系统地学习前端,我把我平时怎么学习也和他说了一下

# 二面
> * 时间:2019-12-13
> * 方式: 视频面
> * 面试时长:55分钟
### 自我介绍
### 说说自己的项目
### 1. 你知道跨域是什么吗
### 2. 解决跨域的方式 、
> 你觉得用这几个里面的哪个比较合适,为什么
### 3. 在做项目的时候有遇到什么安全问题吗
### 4. 说说CSRF
### 5. a().b().c() -> run运行得到下面结果
```
'a'
'b'
'c'
```
> 如果这样也可以怎么写
```javascript
b().a().c()
c().b().a()
```
### 6. 要求1:JavaScript 写一个类 要求2:构造 private public 方法
### 7. JavaScript有多少种类型(9种)
### 8. 你觉得项目里面最重要的是什么
> 在前端要怎么做好用户体验的优化
### 9. 在项目里面有没有做监控,去监控用户的一些功能使用
### 10. 有了解过node.js吗,使用过什么框架吗
> 为什么要用socket.io(我说到自己写聊天室用了socket.io)
### 11. 你了解express吗,说说express
### 12. 说说cookie和localStorage的使用场景
### 13. 你觉得用cookie来存储登录状态合适吗,为什么
### 14. cookie和session的区别
### 15. 你知道哪些常见的HTTP状态码,说出他们的含义
### 16. 问我下面结果是什么
```javascript
var a=1;
var b=a;
b=2
console.log('a: ', a);
// 1
```
> 下面这个结果又是什么
```javascript
var a={foo:1};
var b=a;
b.foo=2
console.log('a: ', a.foo);
// 2
```
> 为什么两次结果会是那样

# 三面(时间55分钟)
> * 时间:2019-12-17
> * 方式: 视频面
> * 面试时长:55分钟
### 自我介绍
### 1. Vue里面这个东西,浏览器无法识别,怎么编译让浏览器识别的
```html
<template>
<div>{{a}}</div>
</template>
```
### 2. 说一下v-key的作用(深入的说,深入到是怎么解析虚拟DOM的)
### 3. 实现下面这个东西
```javascript
class Queue {
enqueue(data, level) {
},
dequeue() {
},
log() {
}
}

queue.enqueue('a1', 1);
queue.enqueue('a2', 1);
queue.enqueue('a3', 3);
queue.enqueue('a4', 2);

queue.log() // a3 a4 a1 a2
queue.dequeue() // a3
queue.log() // a4 a1 a2
```
### 4. 说说flex布局
### 5. 平时学习框架是只学使用而已吗
> 我说了还有看一些源码,然后就说了当时在看的axios的一些源码
193 changes: 193 additions & 0 deletions 前端/2020-01 字节 泽明.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,193 @@
# 面经
> * 面试部门:字节跳动-飞书
## 一面
> * 时间:2020-01-05
> * 方式: 视频面
> * 面试时长:40分钟
### 1. 把++i变成i++有什么区别
```javascript
var result = [];
var a = 3;
var total = 0;
function foo(a) {
var i = 0;
for (; i < 3; i++) {
result[i] = function() {
total += i * a;
console.log(total);
}
}
}

foo(1);
result[0]();
result[1]();
result[2]();
```

### 2. 这段代码有什么问题,怎么改进
```javascript
var list = readHugeList();
var nextListItem = function() {
var item = list.pop();
if (item) {
// process the list item...
nextListItem();
}
};
```

### 3. 实现一个函数 sum,满足
```javascript
sum(1)(2)(3).sumOf() = 6
sum(1, 2, 3)(4).sumOf() = 10
```
### 4. 做canvas的时候怎么处理时间
### 5. TCP传输的时候做了哪些处理
### 6. 知道节流和防抖的区别吗
### 7. 做的项目里面哪个比较有成就感
### 8. node的服务器是用什么搭的

## 二面
> * 时间:2020-01-09
> * 方式: 视频面
> * 面试时长:20分钟
### 无自我介绍 下面的有什么问题,怎么解决,保持递归 不使用ES6
### 1.
```javascript
var list = readHugeList();

var nextListItem = function() {
var item = list.pop();

if (item) {
// process the list item...
nextListItem();
}
};
```

### 2. 这个有什么作用
```javascript
setTimeout(fun(),0)
```
> 这样写和下面这样写比有什么好处
```javascript
fn()
```
### 3. 说一下setTimeout和promise的执行顺序

### 4. 一个页面如果卡顿,可能是哪些原因造成的
> 怎么排查这些原因
### 5. 说一下输入https://toutiao.com到页面渲染出来的全过程
> 说到页面渲染时问页面是怎么渲染的
### 6. 单向数据流和双向数据绑定的区别
### 7. 说一下XSS攻击和CSRF攻击
### 8. 做一下下面这道题
给你一个 DOM 元素,创建一个能访问该元素所有子元素的函数,并且要将每个子元素传递给指定的回调函数。
函数接受两个参数:
DOM
指定的回调函数
```javascript
function Traverse(p_element,p_callback) {
// ...
}
```
> * 面试部门:字节跳动-没问
## 一面
> * 时间:2020-01-16
> * 方式: 视频面
> * 面试时长:96分钟
# 一面 (96min)
### 1. 实现一个类,可以监听对象属性的值变化。加分项:考虑对象存在值为数组或对象的属性。
```javascript
class Observe {
constructor(data: Object) {
}
// 监听属性变更
$on() {
}
// 触发属性变更事件
$emit(key, value) {
}
}
const data = new Observer({
a: 1
});
coonsole.log(data.a) // console: 1
data.$on('a', (newValue, oldValue) => {
// this === data
console.log(newValue, oldValue);
});
data.a = 2 // console: 2 1
```
### 2. 题目:

给定一个整形数组长度为n
求构造出子序列连续并且长度最大,要求子序列有顺序。
连续定义序列 [x, x+1, ..., x+k-1] ,长度是k
例如数组 [5, 3, 1, 2, 4] 的子序列 正确的表述例子, [3] [5,3 , 1, 2, 4] [5, 1, 4] 但是 [1, 3] 不是,因为要按照从左往右顺序 [3, 1] 是正确的子序列。
输入:
n个整数,1<= n <= 200000
a1, a2, ..., an (1<= ai <= 10^9 )
输出:
k

任意一个可以组成最大长度的连续子序列的数组元素下标 数组,下标按照递增排列
Example:
input
7
3 3 4 7 5 6 8
output
4
2 3 5 6

-----------
input
16
6 7 8 3 4 5 9 10 11 6 7 8 9 6 10 11
output
9
4 5 6 10 11 12 13 15 16

---------

input
4
10 9 8 7
output
1
1

---------

input
9
6 7 8 3 4 5 9 10 11
output
6
1 2 3 7 8 9
### 3. 请按序写出以下程序执行的结果
```javascript
console.log('begin');
setTimeout(() => {
console.log('setTimeout 1');
Promise.resolve().then(() => {
console.log('promise 1');
setTimeout(() => {
console.log('setTimeout2 between promise1&2');
})
}).then(() => {
console.log('promise 2');
});
}, 0); console.log('end');
```
### 4. 说一下节流和防抖
### 5. 说一下localStorage,sessionStorage,cookie的区别
### 6. 说一下pwa用了什么
### 7. 说一下缓加载和预加载的区别
### 8. 单点登入

# 建议
1. 相对来说,字节的算法确实比bat考的还多,面字节还是要多刷刷算法题,但是一般leetcode那些数组的题都会做应该没问题,到现在遇到最难的也就是动态规划
2. 准备好再面试,这两次面试我比较急,期末考的时候被捞起结果没复习多少就面试了,结果不好,还影响了后面3月的投递
Loading