字节前端实习一面+二面+三面面经(已OC)
一面(2021-11-29)
- 自我介绍
- 是大三吗?相关的专业课学了啥?
- 有学操作系统吗?编译原理学了吗?
- 讲一下 var let const 的区别?
- 块级作用域是一个什么概念?
- 对于引用类型的理解?
a. string是个基本类型,但是它的string.length是怎么实现的?(包装类) - JS 引擎是单线程还是多线程?
- 作为一个单线程,是怎么实现并发请求的?(异步,任务队列)
- 任务队列了解吗?
- Promise 了解吗?
- Promise 存在哪些状态?
- async await 用法用过吗?
- 说到回调地狱了,问一个简单的问题?
- es6:你是怎么学的这一块?
- 操作系统没太好好学是吧,计算机网络还行?
- 操作系统巴拉巴拉?(面试官:算了算了不问了 我:我太菜了)
- TCP 和 UDP 的区别?
- TCP 的拥塞控制,网络拥塞会有一个变慢的行为,详细说说?
a. 你这是自己学的? - 扩展题:同样大小的数据包,一个通过TCP,一个通过UDP,哪个更快?哪些因素
会影响? - 项目,vue 的单向数据流?
- 改写成async await的形式
pro1().then( pro2().then( pro3().then( pro4().then( pro5().then() ) ) ) )
- vuex 如何实现状态管理的?
- 了解 VDOM 吗?讲讲
- vue-router 单页多页应用的区别?
- 单页相对于多页有什么优势?有什么缺点?
- 首屏加载优化?单页的优化?
- vue 用啥学的?看的啥视频啊?
- 路由懒加载,一点点相关的问题?
- 代码题!判断对象里的依赖有没有循环引用?
a. 树的结构,某一个节点可能被上几层的节点引用、
(有点像 将树的每一条路线比作链表 判断是否有环 递归)type FileType{ name: String, path; String, importFileList: FileType[](这个数组中存放的就是这个对象引用的对象) }
二面(2021-11-29)
一面和二面是同一天面完的
挑一个项目讲讲,都说也行
网易云音乐的登陆注册是怎么做的?
Q: 下个星期再来的时候状态还在吗?
A: 还在,返回一个token,设置一个有效时间,token在的话就可以
Q: 保存在本地是保存在哪?
A: vuex 和 localstorage 结合
Q:. 有没有想过这个过程会不会存在什么问题?
A: 每次请求都要添加到请求头里,麻烦
Q: cookie 不安全,是什么意思?
A: document.cookie进行修改,造成CSRF攻击。和后台的交互,会存在跨域。
Q:后端接口的数据是怎么获取的?
A:通过axios请求获取
Q:都会跨域,所以跨域就不是cookie的问题,为什么不用相同的域名呢,token保存在本地,怎么保证不会被本地修改?cookie没有加密吗?是明文传输吗?
Q:页面往localstorage里面存一些东西怎么操作?
A:setItem,getItemlocalstorage,sessionstorage,cookie有什么差异?
cookie 里 标记为http-only,secure,有什么影响?
标记了http-only的话还能使用document.cookie修改cookie吗?(不能了,这里当时确实没有考虑到)
所以在这种情况下cookie也是一个相对安全的东西呀
手机号邮箱登录的问题,写正则匹配邮箱?可以写一下吗?
官网权限限制怎么做的?
a. 状态码,标志位所以一共有多少种划分?
a. 两种我想对内部成员进行细化划分,怎么实现?
a. 继续添加状态位css 样式自己写的多一点还是第三方组件用的多?
盒模型能说一下吗
回流和重绘
ES6 的东西,就你了解的,哪些可以拿来讨论一下?你理解的深一点有哪些?
打印输出题
console.log(1); setTimeout(() => {console.log(2)}, 1000) async function fn() { console.log(3); setTimeout(() => {console.log(4)}, 20) return Promise.reject(); } async function run() { console.log(5); await fn(); console.log(6); } run() //for循环执行约150ms for(let i = 0; i<90000000; i++) {} setTimeout(() => { console.log(7); new Promise(resolve => { console.log(8); resolve(); }).then(() => { console.log(9); }) }, 0) console.log(10)
vue2 和 vue3的差异?
defineProperty 拦截的示例
Object.defineProperty(obj, 'userName', { get(){ console.log('qwerq') }, set(){ console.log(234) } });
实现一个2^n
function power(n) { let sum = 1 for(let i = 0; i < n; i ++){ sum *= 2 } return sum }
a. 还可以使用位运算来实现:
https://blog.csdn.net/m0_38036750/article/details/91353071
三面(2021-12-03)
- 自己有没有哪方面是比较欠缺的?
a. 自己在框架的学习上还有些不足,不够多不够透彻 - 项目遇到的难点或者印象比较深的?
a. @import 样式污染
b. 官网评论, - 题目:
// 输入50a6we8y20x // 输出50个a,6个we,8个y,20个x function getStr(str) { let res = []; for(let i = 0; i < str.length; i++) { if(str[i] >= '0' && str[i] <= '9') { res.push(str[i]) } else { let count = ''; while( res.length !== 0) { count += res.shift(); } count = Number(count); while(count--) { console.log(str[i]) } } } } getStr('50a6we8y20x')
- css 画一个三角形并解释
三面还还聊了一些别的东西,然后三轮面试就顺利结束了,面试官们人都很好,很耐心
因为我三面在周五,所以大概在下一个周的周一的时候才接到的hr的电话,hr小姐姐人超级好