字节跳动
面试情况:一面通过
面试时长:70分钟
面试官态度: ★★★★★★(都说字节面试体验好:)
面试感受:
1、用的牛客编辑器,难受,要多联系
2、写算法一定要理清思路再写!!!
3、多刷题
字节 一面8.9
开场
- 自我介绍
- 没去实习是吧,你这个项目是个人的还是团队or学校的?
项目(简历写什么就会问什么,一定要熟悉!熟悉!熟悉!自己简历)
- 无感知刷新令牌怎么实现
- 缓存存在哪,缓存生命周期
- 怎么实现登录的,账号密码/原生
- 用过express吗(面试官想问koa和express区别,但是我不会express,就简单说了koa特性)
- 你刚才提到错误处理,你是怎么封装的?
- 错误处理用的什么判别,statusCode吗?
八股
- CSS经常写吗?(我基本只会flex,哈哈哈)
- flex三个值,flex-basis的值说一说
- 1px横线
- array判断方法
- typeof 判断数组返回什么,判断null呢?
- 说说Symbol,应用场景主要是哪?
手写
正则,实现trim
算法:求"对象"深度
如如果"对象"是普通值,返回1,如果"对象"是引用类型,返回2,如果"对象"内为引用类型,且包含其他引用类型,+1并返回
案例:
//例1 1 => 1 //例2 [1, 2, 3] => 2 //例3 {name: 'abc'} => 2 //例4 { name: 'abc', key: { name2: 'cba' } } =>3 //例5 [1, 2[2, 3], 1] => 3
反问
表现
学习建议
面试官:为什么不问问业务?
我:我这算法没撕好,感觉凉了!
面试官:emm...确实纠结,再来一题,愿意吗?
我:好呀好呀!
算法:给Array增加一个reader方法,实现以下功能
Array.prototype.reader() = function () {} let arr = [1, 2, 3, 4, 5]; let obj = arr.reader(); obj.read(1) //[1] obj.read(1) //[2] obj.read(3) //[3,4,5] obj.read(1) //null console.log(arr); //[1, 2, 3, 4, 5]
字节二面 8.16
面试情况:二面挂
面试时长:54分钟
面试官态度: ★★★★★
面试感受:
1、我是算法菜鸡,算法菜鸡,算法菜鸡
2、我计算机基础垃圾,计算机基础垃圾,计算机基础垃圾
开场
- 自我介绍
- 为什么选择前端
- 为什么不读计算机研究生
- 怎么学习前端
- JS编程方式
- 除了函数编程还有什么?
- 什么是函数式编程
- 函数是一等公民是什么意思,相对于JAVA区别
- 高阶函数了解吗?纯函数了解吗?
- 前端领域新技术了解哪些?
- 计网、操作系统、组成原理了解过吗?
计算机基础
- 进程和线程
- TCP和UDP
- TCP怎么保证可靠传输
- 长连接、短连接
- 如何断开长连接
- 当有很长数据的时候,服务端怎么确定实体结束位置?
- 了解popelining吗?它基于短连接这个做了哪些优化?
- http2介绍一下
- http2多路复用和HTTP1.1 keep-alive有什么关系
- 除了serve push还有其他的服务端主动和客户端联系的方式吗?
- 介绍下websocket
JS基础
- 介绍下ES6,自己用过哪些?
- const定义数组,还能push元素吗?为什么?
- 如何设计一个Map?了解过JAVA的hashMap吗?
- 说说Promise的catch和then的第二个参数区别
- then方法success回调发生异常,能在catch捕获吗?then的第二个参数,reject方法能捕获吗?
算法(题目是英文)
实现lazman接口
LazyMan(name:string,logFn:(log:string)=>void) //实现 LazyMan('Jack',console.log)//Hi,I'm Jack LazyMan('Jack',console.log).eat('apple') //Hi,I'm Jack //eat apple LazyMan('Jack',console.log).sleep(10).eat('apple') //Hi,I'm Jack //(sleep 10s) //eat apple
两个栈实现队列
全部评论
(3) 回帖