字节跳动前端(一二三面+HR)

一面(10.28,1小时)

上来先问了问成绩、平时看哪些博客

口头提问

  1. HTTP请求的类型有哪些?
  2. HTTP报文组成部分
  3. HTTP常见header
  4. 前后端如何交互
  5. 登录逻辑(用户身份验证)
  6. cookie常用字段
  7. cookie、sessionstorage、localstorage
  8. 什么是跨域?如何解决跨域问题(提到CORS,CORS过程,简单请求和复杂请求,浏览器发送请求)
  9. 原型链(先手撕一道继承代码题,然后问了一些原型链的问题)

手撕代码

【手撕代码部分】
题目一:css用flex水平垂直居中
题目二:判断数组
题目三api.get()是一个异步函数,会从服务端异步请求数据(number),返回一个Promise
function fetchData() {
let data = -1;
api.get('/api/data')
.then((i) => {
data = i;
})
.catch((e) => {
console.log(e);
});
return data;
}
题目四:把setTimeout改造成Promise的sleep函数

// 函数签名
function sleep(second);

// 实现10秒之后打印“10”
sleep(5).then(i => { console.log(i)});

题目五:原型链的继承,实现构造函数B继承于A,
构造函数A
- 函数签名:const a = new A(name);
- 实例属性name  // 字符串
- 原型对象属性有一个run方法
- function () { console.log(`${this.name} run`); }

构造函数B
- 函数签名:const b = new B(name, email);
- 实例对象拥有A的所有实例属性
- 实例对象自定义一个email属性  // 字符串
- 原型对象继承于A
- 原型对象上自定义一个swim方法

题目六:数组扁平+数组去重+排序
var arr = [ [ 2, 1, 2], [3, 4, 5, 5], [ 7, 8,6,9, [11, 12, [12, 13, [14] ] ] ], 10];

编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组

二面(10.29,1小时)

二面先聊项目,然后面试官提了几个问题,让我手撕代码
  1. 介绍项目难点,提到用户权限控制,用到动态路由加载以及如何改进
  2. vue2.0和3.0双向数据绑定,怎样为data添加数据
  3. 知道的排序算法,稳定性,时间复杂度

手撕代码

题目一:给定一个二叉树,返回所有从根结点到叶子结点的路径
function allPath(root){
var res = [];
if(!root) return res;

function getPath(root, arr){
var a = [...arr];
if(root){
a.push(root.val);
if(!root.left && !root.right){
res.push(a);
}else if(root.left){
getPath(root.left, a);
}else if(root.right){
getPath(root.right, a);
}
}
}
getPath(root, []);
return res;
}


算法二:找到数组中第K大的元素,我用了一个快速排序,leetcode215:https://leetcode-cn.com/problems/kth-largest-element-in-an-array/
function sortQuick(arr, left, right){
var cur = arr[left];
while(left < right){
while(left < right && arr[right]<=cur){right--;}
arr[left] = arr[right];
while(left < right && arr[left]>=cur){left++;}
arr[right] = arr[left];
}
arr[left] = cur;
return left;
}
function sort(arr, low, high, k){
if(low<high){
var index = sortQuick(arr, low, high);
if(index-low+1 == k){
return index;
}else if(index-low+1 > k){
sort(arr, index+1, high, k);
}else{
sort(arr, low, index-1, k);
}
}
}

算法三:实现一个树形导航栏组件

三面(10.29,1小时)

  1. 进程与线程区别
  2. MySQL单例模式
  3. 平时怎么学前端
  4. 实习时做的项目里的数据走向
  5. 算法题:javascript 实现一个带并发限制的异步调度器,保证同时最多运行2个任务(写了半天没写完,面试官说算了)
class Scheduler {
add(promiseCreator) { ... }
// ...
}
const timeout = (time) => new Promise(resolve => {
setTimeout(resolve, time)
})

const scheduler = new Scheduler()

const addTask = (time, order) => {
scheduler.add(() => timeout(time))
.then(() => console.log(order))
}

addTask(1000, '1')
addTask(500, '2')
addTask(300, '3')
addTask(400, '4') // output: 2 3 1 4
// 一开始,1、2两个任务进入队列
// 500ms时,2完成,输出2,任务3进队
// 800ms时,3完成,输出3,任务4进队
// 1000ms时,1完成,输出1
// 1200ms时,4完成,输出4

HR面(10.30,半小时)

  1. 前面三面的面试感受
  2. 实习主要做了什么,有哪些收获?
  3. 实习时候除了导师和leader给的任务,会做其他事情吗?
  4. 职业规划
  5. 为什么选择做前端
  6. 通过哪些手段纵向提高技术能力
  7. 提前批面试失败了,这次有什么提高吗?
  8. 收到哪些offer或者还有什么流程内的公司
  9. 为什么投了xxx公司(拿了offer的公司)
  10. 选择岗位的标准
  11. 介绍了加班情况,能不能接受
能想起来的题目是这些,没想起来的后面慢慢补充,许愿offer

OC(11.5)

#面经##校招##字节跳动##前端工程师#
全部评论
这是面的在校生吗  感觉好难啊
4
送花
回复 分享
发布于 2020-10-31 08:10
楼主优秀
点赞
送花
回复 分享
发布于 2020-10-31 08:42
秋招专场
校招火热招聘中
官网直投
前端考的算法题相对比较简单吗😂
点赞
送花
回复 分享
发布于 2020-10-31 08:49
楼主,面的哪个部门呀
点赞
送花
回复 分享
发布于 2020-10-31 09:00
请问这是实习还是校招?
点赞
送花
回复 分享
发布于 2020-10-31 09:15
撕这么多道算法吗楼主好强,字节加班情况是什么样的呀
点赞
送花
回复 分享
发布于 2020-10-31 11:09
请问楼主面的是杭州字节?
点赞
送花
回复 分享
发布于 2020-10-31 12:25
收录小程序了 感谢
点赞
送花
回复 分享
发布于 2020-10-31 14:56
腾讯帮内推,欢迎各位私聊
点赞
送花
回复 分享
发布于 2020-11-01 22:59
楼主拿到offer了吗
点赞
送花
回复 分享
发布于 2020-11-02 16:58
许愿
点赞
送花
回复 分享
发布于 2020-11-03 15:02

相关推荐

14 89 评论
分享
牛客网
牛客企业服务