小前端总结的秋招面筋经验,供大家参考.
最近有时间,决定把之前秋招时的面试经历分享出来,回馈牛客,希望能够帮助到大家
个人情况
- 学历:双非本科
- 岗位:前端研发
- 实习经历:一段
字节跳动
部门:火山
日期: 9月
一面 30min
- 聊了聊实习期间负责的事情.
- http不同版本的特点
- http缓存的原理,问的很细,建议相关的http字段和优先级着重看一看
- vue2.0和3.0的区别?优势?
- 双向绑定的原理
- xss和crsf的区别,如何防范?
- 算法1
- 跳台阶-一步跳1或2个台阶,问跳n阶有多少种方法?
- 手写代码多种方法
- 问时间复杂度和空间复杂度
- 算法2
1.跳台阶-一步跳[1,n]个台阶,问跳n阶有多少种方法?
2.问时间和空间复杂度二面 50min
- 同样聊了聊实习经历
- http缓存字段优先级(重要)
- TCP的拥塞控制
- 数据库的索引类型
- css选择器的优先级
- 如何实现一个屏幕宽度的50%的正方体?
- 对es6中的Proxy的了解
- 算法题
描述: 找出数组arr中n(1 <= n <= arr.length)个数的所有组合,只进行组合不进行排列.//例1 input: arr = [1,2,3],n = 2 output: [[1,2],[2,3],[1,3]] //例2 input: arr = [1,2,3],n = 3 output: [[1,2,3]] //例3 input: arr = [a,b,c,d],n = 3 output:[[a,b,c],[a,b,d],[a,c,d],[b,c,d]]
- 实现一个发布订阅的类,大家应该都熟吧
三面 30min
- 自我介绍,实习期间的事情
- 实习中有挑战的事情
- 小程序的原理与H5的区别
- 小程序的性能优化
- 浏览器的渲染过程
- js的继承方式
- js中的事件循环机制,微任务和宏任务的区别
- 算法题
描述 找到二叉树中是否有一条路径相加等于一个target//例如 in:1 / \ 2 3 /\ /\ 4 5 6 7,target: 11 output: true 解释: 1->3->7 相加等于11 in: target = 12 ouput: false 解释: 无法找到相加和等于12的路径
hr面 30min
- 自我介绍,实习经历
- 实习带给你的成长
- 为什么不考研
- 在学校的学习成绩
- 如何看待加班
- 聊了聊字节的工作强度,说相比百度肯定节奏快
- 问了城市的选择啥的
美团
日期: 10月
一面60 min
- 自我介绍,聊实习经历
- 算法题
- 括号匹配
- 将二叉树的所有节点拆散
//例如 input: 1 / \ 2 3 /\ /\ 4 5 6 7 output: [1,2,3,4,5,6,7]
- 写一个节流的函数
- http的缓存原理
- 编写vue通用组件的思路?
- 问项目
- 介绍node中的express框架
- 用过axios的拦截器干了什么
- node中间件的原理
- 使用过的node中间件
- http请求和相应的全过程
- fetch和ajax的使用对比
- node端和浏览器端的差异分析
二面 40min
- 自我介绍
- 问毕业时间以及城市的选择.
- 问项目
- websocket和http的对比
- websocket是如何保证通信可靠? 基于tcp?
- 如何处理网络中的错误请求?
- 浏览器的缓存的使用
- localStorage和sessionStorage的对比
- 项目中如何保持浏览器端和服务端的通信状态?
- cookie和token的对比
- cookie的安全性如何保障?
- token存哪里比较合适?
- 最后一道简单题目,合并两个有序数组并去重
可以使用多种方法解决 input: arr1 = [0,1,4,5,7,7,9],arr2 = [0,2,3,4,7,9] output:[0,1,2,3,4,5,7,9]
hr面 25min
- 自我介绍
- 实习经历
- 实习中扮演的角色
- 遇到的难题如何解决
- 实习的收获
- 为什么不转正
- 做的事情中有特别想改进的点
- 如果有多个任务在手,如何高效的处理?
- 希望去北京还是上海?
- 如何选择offer?
- 反问
去哪儿
日期: 10月
- 自我介绍
- 实习经历
- js打印看输出
1.情况一: Person.prototype.a = 1; function Person() { } let p1 = new Person(); Person.prototype = { a: 2 }; let p2 = new Person(); console.log(p1.a);//1 console.log(p2.a);//2 情况二: Person.prototype.a = 1; function Person() { } let p1 = new Person(); Person.prototype.a = 2; let p2 = new Person(); console.log(p1.a);//2 console.log(p2.a);//2
2.Person.b = 'b'; Person.prototype.a = 'a'; function Person() { } let p1 = new Person(); console.log(p1.a);//a console.log(p1.b);//undefined
- 实现对一个接口进行请求
1.每隔1000ms请求一次
2.当res的data返回competed字段为true的时候停止.function apiIntervalCall(url) { const timer = null,data = []; return new Promise((resolve,reject)=>{ timer = setInterval(()=>{ data.push(res.data); axios.get(url).then((res)=>{ if(res.data.competed === true) { resolve(data); clearInterval(timer); } },err=>{ reject(err); }) },1000) }); }
- 算法
描述 有序数组中插入一个数字,使得数组任然有序.例如 input: arr = [0,0,1,5,7,8,9], num = 4; ouput: arr = [0,0,1,4,5,7,8,9];
- 实习中遇到的难以解决的问题
- 自己在项目中承担的角色
本人的分享就到这了,祝愿各位牛友offer多多.
#秋招总结##字节跳动##面试题目#