-
js是单线程还是多线程,为什么这么设计
-
css弧形永动动画实现
-
css 1px像素适配
-
css设置div宽高比3:4 padding-bottom:75%
-
说下transform 和transition
-
类数组怎么转换成数组
-
new Array()接收的参数是什么
-
get和post的区别
-
http状态码
-
react生命周期
-
setState更新是同步还是异步
-
axios源码整体架构
-
手写Promise.all
-
Promise中用了什么设计模式
-
Promise都有哪些状态
-
算法12345678.01 =>123,456,78.01
-
算法12345678.01=>12,345,678.01
-
从地址栏输入地址到页面回显,都发生了什么
面试感受:
女面试官,题是有点多,但感觉还好,都是偏基础。印象最深的是算法部分,面试官出了题,我直接说了思路,好像还巴拉巴拉说了一下其他的。面试官说:哎呀,我只是想让你做个题…(撒娇语气??) 好的,做题。
百度二面
-
自我介绍
-
业务中你用node都做了什么
-
你对node还有什么想分享的吗,觉得用起来爽的部分(gzip pipe)
-
业务中数据是怎么存储的,node为什么没有接入数据库
-
node单线程容易崩溃,怎么维护服务的
-
pm2内部机制了解吗
-
cluster了解多少
-
业务线如何用端口号区分(nginx http-proxy)
-
业务上有什么坑嘛 (环境多)
-
webpack常用配置
-
webpack插件写过吗
-
webpack常用插件
-
关于webpack你还有什么想分享的吗 (同步加载异步加载的实现)
-
浏览器地址栏输入请求地址到页面回显发生了什么
-
重绘和重排了解吗
-
重绘和重排如何做取舍
-
如何将css内容插入到页面上(style-loader)
-
如果让你实现style-loader,你打算怎么做
-
算法题-手写快排
-
算法题-查找一个字符串中出现次数最多的字符
-
算法复杂度层面比较一下快排和其他排序
-
项目是内部使用吗 (是,未开源)
-
有没有考虑过高并发场景,如何解决(缓存,压缩,负载均衡,集群)
-
现在是在职状态吗
-
最后离职日期是多少
-
手上有没有其他offer
-
如果今晚三面是否有时间(说有上线,推迟了)
-
反问一:百度App部门有没有使用node的场景
-
反问二:App部门是不是只有移动端场景,有没有其他的,比如pc
-
反问三:百度怎么做容灾的
-
反问四:百度App是分工明确还是也会出现身兼多职的情况
-
反问五:给我一个今后学习发展的建议和这次面试的简单评价
面试感受:
不得不说,和二面面试官聊的很是带劲,给我很多鼓励,完事大概是晚上十点多了,意犹未尽。当场要整三面,当时也恰好11点要上线,就改时间了,三面约到了一周后。
百度三面
三面面试官是手机百度部门的leader,电话面的,主要是问了我一下期望薪资和来百度的意愿。然后又是一波鼓励,还教我怎么谈薪资,感动到爆炸。说实话当时我已经决定同等薪资必去百度,奈何后续流程太长了,我已经接到抖音正式offer邮件那边还没反馈。
抖音一面
-
自我介绍
-
说一下业务中你负责的部分
-
业务中数据是怎么存储的
-
业务中拖拽如何控制位置的,适配怎么处理,全屏怎么控制
-
你用nodejs和java分别做了哪些业务
-
业务中的缩略图是什么,实现方案
-
说下jwt
-
说下js中数据存储方式
-
知道内存碎片怎么产生的吗 v8
-
post请求有几种方式触发
-
post的ContentType类型有哪些(application/x-www-form-urlencoded/multipart/form-data/text/plain)
-
知道jwt有哪些缺点吗
-
说一下http和https的区别
-
https的tls了解吗
-
说一下锁(懵逼),举例是读锁和写锁
-
为什么要去看axios的源码,大体实现
-
业务中权限是怎么接入的,数据表怎么划分的
-
能说一下css盒模型吗
-
说下box-sizing中border-box 和content-box的区别
-
this指向
var fullname = ‘1’;
var obj = {
fullname: ‘2’,
prop: {
fullname: ‘3’,
//如果改成普通函数呢?
getFullname:()=> {
return this.fullname;
}
}
};
console.log(obj.prop.getFullname());
var test = obj.prop.getFullname;
console.log(test());
- 算法题1:节点渲染
const el = require(‘./element.js’);
const ul = el(‘ul’, {id: ‘list’}, [
el(‘li’, {class: ‘item’}, [‘Item 1’]),
el(‘li’, {class: ‘item’}, [‘Item 2’]),
el(‘li’, {class: ‘item’}, [‘Item 3’])
])
const ulRoot = ul.render();
document.body.appendChild(ulRoot);
- Item 1
- Item 2
- Item 3
- 算法题2:属性获取
{
a:{
b:{
c:{f:“aa”}
},
d:{
e:{g:“bb”},
h:{i:“cc”}
},
j:{
k:“dd”
}
}
}
// [f,g,i,c,e,h,k,b,d,j,a]
面试感受:
面了百度和58同城,有点膨胀,字节让我清醒。算法被吊打,只写了个大概和思路。感觉要凉了,最后反问环节我已经没什么想问的了。如果说有,我想问一下我还有机会吗?最后说了一下我的遗憾,表示我擅长的没有完全体现出来,命中的很多盲区。好家伙,峰回路转,面试官说我还是有其他亮点的,再给我一次机会,就到了二面,感动到冒泡泡…
抖音二面
-
看你简历有提到nginx配置,主要配置了什么
-
说下上线部署流程中常用的linux命令
-
node的进程守护怎么做的,发现非预期故障怎么排查
-
项目中为什么选择用nodejs
-
业务中负责哪些部分
-
手写一个koa2的compose
-
手写一个Scheduler类,实现并发控制
//JS实现一个带并发限制的异步调度器Scheduler,
//保证同时运行的任务最多有两个。
//完善代码中Scheduler类,使得以下程序能正确输出:
//Scheduler内部可以写其他的方法
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
面试感受:
二面问的不多,主要是写代码吧。Scheduler没有完整写出来,koa2的compose写出来了,其他的回答还行,完事约了三面。抖音二面时快手hr打电话告诉我二面过了,当场愣住,我不是正在二面吗?怎么就过了?
抖音三面
-
为什么工作不久离职
-
你觉得你擅长哪些技术(react+node+计算机网络)
-
说一下进程线程,如何通信?
-
两个线程可以直接通信吗
-
你觉得node的适用场景是什么
-
相比其他后台语言,为什么你更倾向node?
-
在业务开发上,你觉得node和java的区别是什么?
-
node服务的性能监测有没有了解过?
-
http中间人劫持了解吗?如何解决呢?(说了https)
-
为什么https可以做到避免中间人劫持?(说了加密层tls)
-
展开说一下tls握手(对称,非对称,对称+非对称的组合)
-
加密套件指的是?(举例了AES)
-
业务中的安全问题有没有遇到过?怎么解决的?(说了base64,cors,xss,csrf,cookie的httponly和samesite属性)
-
你倾向的技术领域和业务场景是怎样的?
-
算法1:二叉树层序遍历和s形的层序遍历
-
算法2:如何在从左到右升序,从上到下升序,每一行第一个元素大于上一行最后一个元素的二维数组中查找某个数字的索引?如果是一维数组呢?
-
算法3:二分法的实现
-
算法4:单链表反转
-
反问:抖音安全部门主要的业务范围是什么?
面试感受:
三面问的更全一点,理论和代码层面的都有,算法2没写出来,其他的应该都抗住了。后续流程很顺利,已拿offer。
猿辅导一面
猿辅导那天是招聘专场,一面到底,直通hr面。因为某些非预期情况,不再考虑这边,选了抖音。
-
自我介绍
-
业务中负责的部分
-
业务中数据怎么存储的
-
为什么坚持用node
-
算法1:promise并发控制
-
算法2:前k个元素
-
js中遍历数组的方式
-
react中遇到的坑,怎么解决的
-
说一下类组件和函数组件
-
选择hooks的优点
-
什么时候用类组件
-
说下http缓存,如何实现
-
反问一:这边有没有使用node的场景
-
反问二 :业务线中使用的技术栈是什么
-
反问三:有没有jq那种老项目
-
反问四:面试评价和今后发展的建议
面试感受:
和面试官聊的很开心,从技术到业务到技术选型,巴拉巴拉聊了很多。那边是用的angular11,还有vue2.x,后续打算迁移到react技术栈上。
猿辅导二面
-
自我介绍
-
诸多业务问题
-
react diff算法如何实现的,比对复杂度是多少
-
如何使用react-dnd完成拖放的,说下主要API
-
大数据量场景前端怎么处理,让页面展示尽可能流畅
-
业务中看你有涉及到node的文件读写操作,有没有想过如果某个文件被锁怎么处理?
-
前端缩略图(截图)方案是什么
-
业务中的实时保存会有性能开销,又没有做什么优化?
-
node转buffer输出字符串会比直接string输出快,你的依据是什么?
-
算法一:给定一串数字,求它全排列结果
-
算法二:实现类似百度那种联想搜索(模糊匹配)
-
收尾闲聊:你觉得一面难还是二面难?我说二面吧,数学不太好,全排列没屡清楚。
面试感受:
和面试官聊的依旧很开心,二面聊了很多业务。好家伙,我和面试官开始在白板上画图交流了。咱数学确实菜,全排列也没整清楚,和逻辑混一起更想不明白。面试官表示理解,然后约了三面,部门大leader。
猿辅导三面
-
根据简历确认了一下基本信息
-
为什么刚工作几个月就离职
-
看你大学学的挺多的,高中是不是没好好学习呀(笑,解释说高中是为了高考被动式学习,大学是为了工作主动学习)
-
日语N2是指?(解释了下等级,日企门槛)
-
看你对前端热情挺高的,为什么选择了前端呢?
-
然后面试官直接给我安排了研发方向,前期ng,后期react,说是在组建一个复杂架构小组,目前两人,预计4-6人。(说实话,有点慌)
-
做个题吧,给定学生id和分数组成的列表,写一个函数,通过id获取排名,注意分数相同并列名次的处理(写了七七八八,后边面试官说思路可以,就这样吧)
-
然后让我等下hr,面试官去下一场面试了(面试专场,一下午来了大概20+,每个面试官都很忙,后续基本没有反问时间)
面试感受:
亲切,看面试官第一眼就觉得很亲切。整体聊的也很顺利,过往经历和一道算法题,完事。看的出来,是想要我的。之后hr面结束,打道回府。
猿辅导hr面
-
之前有了解过猿辅导吗
-
确认了一下简历基本信息
-
还有其他公司在面试吗,进展如何?
-
说了下福利,餐补800,六险一金,不限量零食下午茶,健身房,晚下班打车企业报销,巴拉巴拉……说了好多福利
-
聊了下薪资,之前的,预期的。
-
hr表示不会因为工作经验而刻意压薪资,扁平化管理,会根据每一轮面试官评价来定(给我的预期是校招生水平,实际是超预期)
-
你是97年的嘛?(惊讶) 感觉你表现上更成熟一些(我说和个人经历和读的书有关吧)
-
个人经历,比如呢?(笑,爱情算吗?)
-
然后和hr聊起了爱情观
-
所以你现在状态是?(单身)
-
大学读了哪些类型的书?
-
我问了下工作时间,早10晚7,双休不打卡
-
hr表示offer流程会根据我这边其他公司面试进展随时同步,很热情的送我到电梯门口
面试感受:
面试体验确实不错,后期就有点遗憾了。也难怪,我的年限和期望偏差确实有点大,这边流程上多加考虑也可以理解。
快手一面
-
自我介绍
-
项目应用场景和优势
-
写个继承案例
-
Object.create实现
-
Object.create传null和{} 有啥区别吗
-
手写promise(写完then后面试官说可以了)
-
实现一个数组扁平化方法flat
-
js为什么设计成单线程
-
事件循环说一下
-
Promise里都是微任务吗
-
平时怎么学习的
-
koa2中间件和redux中间件比较,原理
-
koa2的洋葱模型和redux中间件的洋葱模型一样吗
-
两个compose的大概实现,reduce的妙用
-
对比一下express,koa2(我连同比较了egg)
-
为什么不要在循环、条件语句或者嵌套方法中调用Hooks
-
new Promise返回的实例和实例then方法执行后返回的promise是一个吗
-
平时有浏览过哪些国外的网站吗
面试感受:
女面试官,聊了很多,感觉想早点下班。hh,我要写代码,刚写了大概,面试官说可以了,可以了,之后约了二面。
快手二面
-
说一下为什么要用hooks,解决了什么问题
-
react函数组件和类组件触发更新的方式有哪些
-
react的强制更新有了解吗
-
react在一秒内点击按钮多次(+1),如何获取最后一次的新状态
-
react-router权限路由写一下
-
实现一个带缓存的求阶乘函数
-
说说你对koa2中间件的理解
-
某些接口允许跨域,某些不允许,如何实现?能不能使用koa2中间件的方式实现一下?
-
koa2中ctx.set的等价写法
-
用node如何实现一个带压缩和缓存的http-server?
面试感受:
面试官给我一种道法自然,万法皆通的感觉,某些想法秀到我了,很强。问的基本都答上了,很快约了三面。
快手三面
-
自我介绍(侧重说下个人优势和项目亮点)
-
为什么刚工作不久离职
-
如果有成熟稳定的A团队和从0到1的B团队,你倾向哪种
-
如果B团队做不好有可能会因为业绩不达标被砍掉,做的好会有高收益,A团队一直是稳定的,你倾向哪种
-
A团队业务线偏向底层功能开发,为B团队服务。B团队在A团队产出基础上,会面对更多复杂业务,你倾向哪种
-
反问1:刚才提到的AB部门的业务覆盖场景是只有pc端吗?还是也有其他端?
-
反问2:工作模式是否为导师制?
面试感受:
无关技术,只谈选择。我选了BBB。之后约了hr面,然后又加面,其实也没问太多技术问题。流程和字节基本同步,薪资待遇持平,只是多了一个背调。我比较想早点入职,选了更快的抖音。说实话,有点舍不得负责招聘的hr小姐姐,hh,给了我很多祝福。
美团一面(部门A)
我怀疑美团有毒,二面必挂。第一次面到2面,题基本都答上了,莫名挂掉。然后又被打捞,依旧面的很顺利,二面挂掉… 好家伙,分手都没个预兆。遗憾是有,但也无能为力。美团到店,我可能到不了店了。
-
自我介绍
-
为什么刚工作不久就离职了
-
项目中常用的linux命令
-
业务中打包怎么做的
-
如何查询某个进程占用的端口号(linux中) netstat -tunlp|grep 80 lsof -i:80
-
实现一个new操作符
-
git reset 和git rebase了解吗
-
实现Object.create
-
实现数组扁平化函数flat
-
webpack有哪些优化方案
-
loader和plugin有写过吗
-
react合成事件了解吗?
-
这些事件处理函数最终挂载到了哪?
-
react中如何阻止冒泡
-
react中setState同步还是异步
-
react15和react16更新机制的差异
-
为什么react16架构升级后就能中断更新,根据什么决定是否中断
-
react源码看过哪些?
-
react中调和的部分是在哪个包?有看过实现吗
-
hooks为什么不能在条件或循环中使用,原理清楚吗?
-
react为什么要引入hooks,解决了哪些问题
-
类组件如何实现逻辑复用?
-
打印题
const o1 = {
text: ‘o1’,
fn: function() {
return this.text
}
}
const o2 = {
text: ‘o2’,
fn: function() {
return o1.fn()
}
}
const o3 = {
text: ‘o3’,
fn: function() {
var fn = o1.fn
return fn()
}
}
console.log(o1.fn())
console.log(o2.fn())
console.log(o3.fn())
面试感受:
美团的面试还是有点东西的,问的很全。linux那个和git rebase不太清楚,其他的基本都ok,然后约了二面。
美团二面(部门A)
-
自我介绍
-
诸多业务问题
-
你期望的业务场景或者工作环境
-
js为什么会有回调地狱呢
-
为什么java没有回调地狱
-
promise.all返回的是什么
-
promise和async你觉得差异点是什么
-
算法1:rgb转16进制函数
-
算法2:
//实现一个retry函数
//如果fn返回成功,则打印一下,最终结果成功
//如果fn返回失败,则打印times下,最终结果失败
retry(fn,times)
retry(() => {
console.log(‘doing’)
return Promise.reject(Error(‘done’))
}, 3)
retry(() => {
console.log(‘doing’)
return Promise.resolve(‘done’)
}, 3)
- 打印题
var a = 20;
var test = {
a: 40,
init: () => {
console.log(this.a);
function go() {
console.log(this.a);
}
go.prototype.a = 50;
return go;
}
};
var p = test.init();
p();
new p()
面试感受:
题基本都答上来了,莫名挂。被打捞的时候问了一下一面面试官,他表示也很迷,说确实有二面面试记录,但是没评价??
美团一面(部门B)
-
自我介绍
-
koa-compose实现
-
react权限路由实现
-
前端路由实现原理(对比react,vue)
-
单页面应用和传统服务端渲染的差异比较
-
前端页面性能优化
-
nginx 负载均衡配置
-
node端处理大文件上传
-
react hooks用过哪些
-
react使用心得
-
redux模板语法的改良(使用装饰器)
-
聊一下代码检查(eslint,ts)
-
防抖节流区分,手写
-
实现map,reduce
-
统计字符串中次数最多字母
面试感受:
和面试官聊的很带劲,好家伙,相见恨晚。面试结束不到一小时hr打电话约二面,并告知一面给了满分。
美团二面(部门B)
-
如何区分函数是new调用还是直接调用
-
解释下下面两段代码执行结果的差异
function foo() {
foo();
}
function foo() {
setTimeout(() => {
foo();
}, 0)
}
-
requestAnimationFrame 和 requestIdleCallback了解吗
-
说下react的key
-
node中加载相同模块,会重复打印吗
//a.js
function foo() {
console.log(‘foo’); //
}
foo();
//b.js
require(‘./a.js’);
require(‘./a.js’);
//node b.js
-
如何设计这套缓存
-
http模块起一个服务,如果想修改请求体并转发给另一个服务,怎么实现
-
说下react-redux干了什么事
-
mapStateToProps的第二个参数作用
-
实现一个Map
-
说下react常用的性能优化手段
-
linux中exec ls 和ls 差异
-
linux 中的source了解吗
面试感受: