题主2019年非985/211非计算机专业本科毕业(野生程序员),以前在腾讯实习了半年多+毕业后在腾讯工做了一年,一直都是前端开发。php
做者:flytamcss
年中的时候因我的缘由,打算离开腾讯,到外面看看,投了若干简历,最终面试了字节跳动、虾皮、快手、拼多多这4家公司。有的喜有的忧,本文是对本次面试的一个总结。html
快手是最先约的面试,在boss直聘上投完大概几天就约了。也是我本次第一家面试的公司。时间某个工做日的晚上8点,那天早早溜回家面试了,是在牛客网上进行的前端
主要问的问题以下:vue
react
16新增了哪些生命周期、有什么做用,为何去掉某些15的生命周期(写过码看过文档都能答上了)html5
fiber怎样的,如何实现异步渲染(链表/可中断)node
redux
和redux-saga
的区别和原理react
项目中用到的saga-duck
是个什么东西linux
useEffect
的实现原理(坦白说本身没看过react的实现,就说了下preact的实现)webpack
异步渲染和旧版的diff的区别
babel实现转码的过程(词法/语法分析)
项目的技术栈怎么选型(这种问题好几回都被问到,感受我真的不太知道怎么答)
小程序底层实现原理了解多少(说了下双线程模型/预加载webview
)
项目nodeJs应用异常退出如何处理(pm2/uncaughtException事件等)、日志上报怎么作(输出重定向到文件,elk服务传传到kibana)
graphic schema怎么设计(说了下我对于项目中的理解,资源维度,感受回答不太好)
有哪些技术驱动业务的案例(说了下这个插件的思路和webpack
一些优化)
最后写了一道算法:最大乘积子序列,有正负数的状况。应该对应于这个leetcode题目。这里我理解错题意觉得这个序列是能够不连续的,并且对于理解错的题意也用了一种错误的写法,用了o(n2)
的一种实现。而后面试官提示说o(n)
,最后仍是没作出来。这个题目其实本身在以前的刷题的时候本身也是比较顺利能解出来了,这里有点惋惜,面试临场代码能力仍是有待增强
最后面试官大概讲了下部门状况,他们那边是深圳快影前端团队,目前规模还不大,正在大力招人。最后还问了下我如何看待目前部门工程化建设不足的问题,我表示这是一个很好的机会去挑战本身(hhh)。
当时此次面试以前,差很少两年没面试了(上一次面试仍是2018年的8月),不少地方本身感受也是表现不太好。虽然面试官最后说了认为我是一个比较优秀的同窗,让我当时迷之自信误觉得会有下一轮。过了一周没有任何答复后,去boss直聘上问了下hr,答复说算法有待增强,第一次面试凉凉~
拼多多投的是广州的部门,好像是小程序团队,经过一个同窗内推的
一面 47分钟。某天晚上9点
redux
的理念(说了下action
dispatch
state啥的
,单向数据流)
react-redux
中connect
怎么实现(高阶组件、context
注入store、subscribe订阅store数据变化)
mixin
hoc 继承的区别,优缺点
react
diff如何实现
react
旧版的diff用深度优先仍是广度优先。为何用深度优先,广度优先能实现吗(其实我认为广度也能实现的,面试官问广度有啥很差,我确实不知道..)
diff的时间复杂度?为何?(o(n)。提了下react优化o(n3)->o(n))
react-router
实现原理(hash/html5 history)
客户端路由hash
/history
实现的区别、原理
有哪些常见的http
头
websocket
/轮询的好处和缺点 (性能、兼容性)
websocket
的握手过程(urgrade websocket
)
tcp
的握手过程
tcp/udp的区别
一个应用场景redux触发几回action如何设计(这个问题感受有点迷,不知道有啥问,我回答也有点迷,面试官说能够了...)
尽量多实现pdd app导航布局实现(就是相似4等分div并列排布)
如何清除浮动
BFC实现原理
开放题:pdd首页假设没有任何优化,尽量多的想优化的办法(懒加载、打包优化、webpack速度、代码压缩、雪碧图、http2 balabala....)
二面 周日 下午2.30 35分钟
css的盒子模型(content-box border-box)
实现动画有哪些方法 (js css)
react mixing hoc 继承 hook之间的区别/优缺点
浏览器渲染出一个页面的过程
vue/react技术选型
项目相关,项目重构开发如何并行balabala...
项目中工程化进行了哪些优化
项目中继续进行优化会从哪些方面去作(说了下webpack5 module fedration)
nodejs项目的性能优化
linux文件权限(4 2 1 )
前端监控怎样实现 (数据采集、上报、展现之类)
三面 原本约了去星期天广州现场的,结果车票都买好了,前几天,hr说部门架构调整,岗位暂时不开放了。又凉了~
拼多多的面试时间仍是很合适的,周天+晚上9点,基本能够避免上班的尴尬(毕竟11 11 6...)。问的问题也中规中矩吧。不过也无缘了。拼多多的两轮是比较少有的不须要手写代码的,都是电话面试。
虾皮经过一个同窗内推的,面的金融部门
虾皮都是qq视频面试+腾讯文档word写代码
一面 周二早上
http 302 301 307之间的区别
301和302对于seo来讲哪一个更好 (301)
跨域是什么、如何解决
jsonp有什么缺点
图片base64和外链的应用场景,各有什么优缺点(base64减小请求数,可是会增长额外的体积)
http缓存机制
https的握手过程是怎样的
set/map的区别
hook的局限性
setState和hook的区别
decorator的做用,编译后是怎样的(@decorator -> decorator(target)...)
symbol是什么,通常用来作什么
csrf 是什么 如何防范
sql注入是什么,如何防范
react 调用setState以后发生了什么
nodejs事件循环机制
pm2的原理,有哪些模式(cluster fork)
docker和k8s有了解多少(k8s听过没用过)
移动端端一个元素拖动,如何实现和优化(节流、改变位置)
-for in
/for of
看代码输出
几道看代码说输出(忘了具体题目了)
描述链表的反转怎样实现,复杂度多少
编程
instanceOf
for of
遍历一面考的都是一些基础知识,须要必定牢固的基础知识准备才行
二面 时间 一面以后的下午
给了两段效果上均可以实现child 继承 parent,细节上的差异
function child(){} function parent(){} child.prototype.__proto__ = parent.prototype child.prototype = new parent()
一些代码看输出的题目。考点有函数this
指向的问题
如何监听html外链资源加载失败(面试官又追问了onerror
和addEventListener
的error都能吗。面试官说onerror不行,具体我没试过...)
Mutation Observer
、Intersection Observer
使用场景(Intersection听过没用过)
127.0.0.1
和0.0.0.0
差异(一个只能经过localhost
,一个能够经过本机ip或者localhost都行)
利用promise js sleep函数实现
jsx转换后是怎样的
redux
compose
函数作什么的,中间件呢
redux-saga
是什么,和redux-thunk
有什么区别
dva有了解吗
umi.js
有用过吗
req.pipe(res)
stream 如何处理数据消费和数据生产的速率不一致问题
writeable stream drain
事件是作什么的(这是和一个控制读写速率有关的事件)
二面考得比较细,问了不少看代码问输出的问题,也问了一些比较细节的问题,有些细节的地方确实实际也没接触过。
字节是经过一个同窗内推的。字节也是本身比较中意的公司之一吧。为了准备字节面试,刷了很多leetcode,虽然好像面试也没怎么考,可是经过这段时间刷leetcode,不得不认可感受本身的代码能力也有必定提高
某个周日晚上20点
一面
经常使用的http状态码(101 200 204 301 302 304 307 400 404 500...)
301和302的区别(永久/临时)
前端路由怎样实现(hashchange
事件 hack history.pushState)
前端路由直接刷新404怎样处理(404时重定向到index.html 如nginx)
从前端到后端全链路如何设计实现一个登录的流程(session方案、jwt)
什么是跨域,怎样处理
简单请求和复杂请求的区别
浏览器的缓存策略说下
domain属性解决跨域。几种domain设置对跨域是否生效
ts 泛型作什么的,infer关键字的做用
题目
实现typescript的Paramters
、ReturnType
(考察infer关键字使用)
实现Promise.all
(每一个promise resolve结果存数组,最后一个promise返回时,把数组返回)
实现一个并发请求控制函数,限制并发数
二面 一面以后立刻进行了二面
jwt的原理(之前用过,比较好说)
xss和csrf是怎样的,如何去解决
pureComponent
和Component
的区别(前者shouldComponentUpdate
默认比较props)
react
hoc hook解决了什么问题
有哪些经常使用的react hook,它们作了什么(useState
useReducer`` useContext
等等...)
项目实现一个中间层的意义(前端全链路日志打通)
setState
同步仍是异步
setState
传递对象和函数有什么区别?如何选择
合成事件怎样的,有什么好处
事件冒泡和事件捕获的区别、react中的冒泡和捕获呢(react中都是合成事件,不管冒泡和捕获,对应于原生事件都是冒泡)
怎样看待加班(hhh 加班很正常啦,在腾讯的时候也是天天加班)
为啥选择跳槽
题目
实现css
垂直、水平居中
实现bind
函数
实现快速排序
三面 三面是leader面,某个周二下午进行
为何以前拿了实习offer没来/下一份工做有怎样的预期
graphql
相比restful
的区别、优势缺点()
为啥选择了redux-saga
做为解决方案(解决异步优雅/提供不少工具函数)。redux
的异步中间件方案有哪些,对比。saga
对比dva
?
graphql的鉴权在哪里作
协程是什么(语言层面实现的并发),Go/nodeJs怎样去实现协程(Go使用go关键字、node
可使用Generator
实现、我理解react
16的异步渲染也是协程的实现)
react
fiber
的机制是怎样的
锁机制的做用,node和Go如何处理死锁
Go/node实现并发怎么作
node和Go的优缺点怎样理解
编程
useState
三面可能由于简历写了本身写过一些Go(其实我只是我的项目的一些玩具),面试官问了很多node和Go的问题,而后我就先代表Go本身只是简单学过,而后就按照个人理解回答node和Go的问题..幸亏感受回答得也7788吧
四面 由于某些缘由,前3面发了offer后我选择换了部门,因而就有了4面
介绍项目 项目难点
项目作了哪些优化
一个广告页面,如何统计在不一样平台上的停留时间
为什么选择换工做
四面基本上都是聊项目,可贵没有作题。咱们准备面试的时候必定也要先整理下本身的项目的一些难点之类的,因此四面过程仍是比较轻松的
字节感受整体难度是这4个公司面试难度最大的,写代码也是最多的,并且感受面试的时候写代码真的比平时加了很多debuff
,这个仍是很是考验心理素质和代码能力的。最后仍是有惊无险拿了字节跳动的offer啦~
这就是本次跳槽面试经历小总结。忠告各位:目前大环境也确实很差,各位跳槽要慎重,千万别裸辞~