题主2019年非985/211非计算机专业本科毕业(野生程序员),之前在腾讯实习了半年多+毕业后在腾讯工作了一年

年中的时候因个人原因,打算离开腾讯,到外面看看,投了若干简历,最终面试了字节跳动、虾皮、快手、拼多多这4家公司。有的喜有的忧,本文是对本次面试的一个总结。

快手

快手是最早约的面试,在boss直聘上投完大概几天就约了。也是我本次第一家面试的公司。时间某个工作日的晚上8点,那天早早溜回家面试了,是在牛客网上进行的

主要问的问题如下:

  • react16新增了哪些生命周期、有什么作用,为什么去掉某些15的生命周期(写过码看过文档都能答上了)
  • fiber怎样的,如何实现异步渲染(链表/可中断)
  • redux和redux-saga的区别和原理
  • 项目中用到的saga-duck是个什么东西
  • useEffect的实现原理(坦白说自己没看过react的实现,就说了下preact的实现)
  • 异步渲染和旧版的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.prototypechild.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实现、我理解react16的异步渲染也是协程的实现)
  • react fiber的机制是怎样的
  • 锁机制的作用,node和Go如何处理死锁
  • Go/node实现并发怎么做
  • node和Go的优缺点怎样理解

编程

  • 实现一个useState

三面可能因为简历写了自己写过一些Go(其实我只是个人项目的一些玩具),面试官问了不少node和Go的问题,然后我就先表明Go自己只是简单学过,然后就按照我的理解回答node和Go的问题..幸好感觉回答得也7788吧

四面 因为某些原因,前3面发了offer后我选择换了部门,于是就有了4面

  • 介绍项目 项目难点
  • 项目做了哪些优化
  • 一个广告页面,如何统计在不同平台上的停留时间
  • 为何选择换工作

四面基本上都是聊项目,难得没有做题。我们准备面试的时候一定也要先整理下自己的项目的一些难点之类的,所以四面过程还是比较轻松的

字节感觉总体难度是这4个公司面试难度最大的,写代码也是最多的,而且感觉面试的时候写代码真的比平时加了不少debuff,这个还是非常考验心理素质和代码能力的。最后还是有惊无险拿了字节跳动的offer啦~

写在最后

这就是本次跳槽面试经历小总结。忠告各位:目前大环境也确实不好,各位跳槽要慎重,千万别裸辞~

码字不易,据说点赞的人都能收割offer~

我人傻掉了!从腾讯辞职后找不到工作,投了20多家简历,却只面过一家。相关推荐

  1. 45岁程序员因陪娃辞职,半年后找不到工作:中年危机该如何自救?

    前几天看到一张令人心酸的截图,是一个网民在政府网站上的留言: 这老哥是一名45岁的程序员,因为要陪小孩辞职了半年,然后就很难找到工作了. 最初看见这个信息是在洋哥的读者群,大家也展开了激烈的讨论,有读 ...

  2. 有 1000 瓶药物,但是其中有一瓶是有毒的,老鼠只要服用任意量有毒药水就会在一个星期内死掉!请问,在一个星期后找出有毒的药物,最少需要多少只小白鼠?

    在程序员面试的时候面试官有时会考我们一些计算机编程方面的智力题,这便是一道有趣的智力题,这道题考察了我们对bit位的灵活运用. 首先1000与1024相差无几,于是我们可以用10个bit位来对这100 ...

  3. 没有性生活、觉得老板傻……我们问了2000个人辞职的理由

    微信又改版了,为了方便第一时间看到我们的推送,请按照下列操作,设置"置顶":点击上方蓝色字体"程序员之家"-点击右上角"-"-点击" ...

  4. 拼多多面试官没想到RabbitMQ我早就入门了,人直接傻掉

    拼多多面试官没想到RabbitMQ我早就入门了,人直接傻掉. 人一辈子最值得炫耀的不应该是你的财富有多少(虽然这话说得有点违心,呵呵),而是你的学习能力.技术更新迭代的速度非常快,那作为程序员,我们就 ...

  5. 网易裁掉患绝症员工:总有人能替代你工作,却没人能替你活!

    点击"技术领导力"关注∆  每天早上8:30推送 作者| Mr.K    编辑| Emma 一名在网易辛苦工作了5年的员工,在2019年1月底被确诊是扩张型心肌病,老老实实的告诉了 ...

  6. 辞职后老板提职加薪请你回去,别说我考虑一下,成熟人都懂这3点

    有人问:自己离职3个月后,老板(领导)打电话请我回去,许诺提职加薪,我该回去吗?先讲一个我的亲身经历: 我原来在一家公司任部门经理.一共有四名下属,个个都不是省油的灯.一位是总部某上级家的阔太太,本来 ...

  7. 如果你因为这个辞职,下一份工作也不会好

    经常有人来跟我说:"我这次一定要辞职!" 后台也总有粉丝留言,因为这样那样的原因想要辞职了. 我们不妨就来聊聊:#你什么时候觉得该辞职了# 连续加班十几天,晚上十点打不到车还下雨: ...

  8. 华为辞职门事件——再谈工作问题

    华为辞职门事件 公务员考试 工作 请用以上三个词造句. 转载于:https://blog.51cto.com/wangjierui/49037

  9. 一旦有辞职念头就干不长了吗_辞职后,社保该不该管,是否影响养老金?需不需本人去社保局注销...

    2020年,注定是不平凡的一年.211.985毕业的我,也没能逃过失业的危机,领着补偿金,继续在招聘网站上投递简历. 屋漏偏逢连绵雨,就在下楼梯的时候,没有穿高跟鞋的我竟然也崴到了脚,当时脚踝肿胀无法 ...

最新文章

  1. java中怪物移动_java中两大怪物,附带面试题!
  2. python估计物体角度
  3. java内存系列:测试JDK最大内存
  4. python3将字符串unicode转换为中文
  5. SSIS 执行变量中的脚步输出列顺序与SQL查询列顺序不同
  6. java安全——数字签名+代码签名
  7. 成本预算的四个步骤_全网推广步骤有哪些?
  8. 多线程python实现方式_python多线程的两种实现方式(代码教程)
  9. taskkill 命令:
  10. SSH 默认端口配置
  11. Bailian4039 IP地址转换【进制】
  12. Clean-Code: 有意义的名字
  13. selenium处理动态加载数据
  14. LabelImg操作手册
  15. 施耐德somachine4.1注册工具
  16. 2021-2027全球与中国网眼织物纺织品市场现状及未来发展趋势
  17. 支付宝小程序添加H5域名配置失败原因
  18. 安装vs无法连接网络
  19. 美味连连-QQ游戏辅助-简单实用的QQ游戏美味连连辅助(非外挂)
  20. C++ 实现 ping 功能 域名(URL)解析实际 IP地址

热门文章

  1. Laravel 预防 SQL 注入
  2. 利用InceptionV3实现图像分类
  3. mysql的相关优化和解释
  4. Rust Wasm 图片转 ASCII 艺术
  5. 随机数生成及微信红包
  6. JavaScript中正则表达式详解
  7. JavaScript concat合并数组
  8. js 合并数组对象,相同键的求和。合并数组对象中的相同项,并统计数量和
  9. 【摘要】HinDroid:一个基于异质图的安卓恶意软件智能检测系统
  10. Mac显示“您的系统已耗尽应用程序内存”时,怎么办?