『处女作』3 年经验前端第一次跳槽面试总结
在掘金上当了几年的伸手党,最近也准备输出一些自己的东西。
关于我
首先介绍一下我自己,17 年毕业于一所 211 学校,但是由于大学四年驰骋在召唤师峡谷,毕业后也没有找到一份大厂的工作,随便找了一家创业公司签了三方就去了。好在这家公司也挺给力,我这一呆就是三年,996 当着「全干工程师」,从前端到服务端,从 JavaScript 到 Java,这几年下来都积累了一些经验,不说精通,也算是比较熟悉了。
今年 7 月份的时候,瞅着已经毕业三年,是时候该考虑一下职业生涯的下一站了,开始准备面试的事情。
这里建议大家,每一份工作度需要慎重考虑,不要频繁跳槽。文章后面也会给出我的理由和建议。
在职准备了 2 个月的面试,开始试着投了一些简历,幸运的是都收到了面试邀请,有的公司也拿到了 offer。也尝试投了几家大厂,阿里、字节、快手目前还在流程中。
也已经向 TL 提了离职,最近在工作交接,事情比较少,写个文章记录一下最近的经历。第一次在掘金写文章,希望能有人看。
复习准备
掘金上关于面试的文章很多,这也是社区一个现状,所以就挑了几篇个人觉得比较好的着重看了一下:
2020年前端面试复习必读文章:这个大佬的思维导图整理的非常好,整个复习流程都是跟着这个导图来的,而且也不用自己到处搜索文章了,相当方便 在阿里我是如何当面试官的 :这篇文章主要是了解一下阿里的面试是怎么样的,面试官关心什么 面试分享:两年工作经验成功面试阿里P6总结 :实战篇,真实的阿里大佬面试经验 字节跳动今日头条前端面经(4轮技术面+hr面):实战篇,真实的字节大佬面试经验
以上文章个人觉得就够了,能花时间把这些知识啃下来,一般面试就没什么问题了。
简历准备
简历真的非常重要,校招的时候就有这样的感觉,那时候有实习经历和没实习经历简直就是一个天一个地。这次也准备认真准备一下自己的简历。
对于简历,个人认为大厂面试官和 HR 最看重的是两点:
项目经历:做了什么 工作经历:稳定性
这里就不展开说了,社区里也很多优秀的文章。在这个过程中,我主要参考了以下几篇文章,推荐一下:
《大厂面试》面试官看了直呼想要的简历 面试官到底想看什么样的简历? 教你如何写初/高级前端简历【赠简历导图】
面试题整理
这里整理一下我这段时间面试遇到的面试题,按类型分一下,这里只整理了我记录的问题,来不及写答案。。
JavaScript
说说 JavaScript 的数据类型 → 通过 JSON.stringify 的方式实现深拷贝,会有什么问题? 通过递归的方式实现深拷贝,会有什么问题? 基本数据类型和引用数据类型有什么区别?→ 引用数据类型如何进行拷?→ 浅拷贝和深拷贝有什么区别?→ 目前 JavaScript 的 API 中,哪些是浅拷贝,哪些是深拷贝?→ 如何实现一个深拷贝?→ 数组去重的方式有哪些(手写) 找出数组中最大的数(手写) 说一下事件循环的理解 快排是如何实现的,讲一下思路和复杂度 如何实现一个观察者模式(手写) 如何实现一个单例模式(手写) 如何解析一个 URL,获取 query 和 hash 的参数(手写) TypeScript 和 JavaScript 最大的区别在哪
CSS
flex 布局问题 如何实现九宫格 flex: 1 是什么意思 grid 布局有没有了解 移动端适配怎么做的,rem 原理是什么 vw 有没有了解
React/Vue
看你的简历,Vue 和 React 都写的比较多,可以说说 Vue 和 React 的区别吗?→ 新项目的技术选型,你会从哪些方面来考虑选用 Vue 还是 React? 说说对虚拟 DOM 的理解 讲讲 React 的生命周期 React 函数式组件和类组件有什么区别 React 的 diff 和 Vue 的有什么区别 列表中的 key 有什么作用 说说 React Hooks 的理解,它有什么优点 为什么在 if 语句中不能使用 useState React 的高阶组件和 Vue 的 mixins 是一个类型的东西吗?Vue 中是否可以实现类似 React 的高阶组件 Vue 的双向绑定是如何实现的 Vue 如何收集依赖 Vue 的父子组件挂载顺序是怎么样的 Vue 的 template 是如何编译的 Vue 3.0 和 2.x 有什么区别 defineProperty 有什么缺点,为什么 Vue 3.0 之后改用 proxy 我不是前端,你如何向我介绍 Vue,让我能够尽可能多的了解它
工程化
webpack 和 rollup 的区别 说说 webpack 的 loader 和 plugin esbuild 有没有了解 CommonJS 和 ESM 有什么区别 vite 和 snowpack 有了解吗,unbundle 有什么好处 webpack 的热更新原理大概介绍一下 vue-loader 做了哪些事情 tree sharking 是什么 webpack4 相对于之前做了哪些优化 项目中,你使用 webpack 做了哪些优化 如何发布一个 npm 包,如何发布一个 beta 包,如何修改一个正式包为 beta 包 npm 包的版本号是如何规范的 DefinePlugin 的作用是什么 你们团队的项目脚手架是如何实现的
后端
Koa 和 Express 有什么区别 说说 Koa 的中间件原理 常用的 I/O API 有哪些 SSR 是如何实现的 serverless 有了解吗 说说 node 的执行机制(单线程) 为什么说 node 是高性能的 node 为什么支持高并发 说说 MVC 的思想 说说 ORM 的优点 MySQL 和 MongoDB 有什么区别 依赖注入是什么
网络
从输入 URL 到页面渲染,其中发生了什么 HTTP 和 HTTPS 有什么区别 说说 HTTP 的状态码 304 状态码是什么意思 浏览器的三级缓存策略了解吗 说说浏览器的缓存,强缓存是什么 websocket 是怎么建立链接的 HTTPS 是如何保证网络安全的 HTTP 如何实现长连接
算法(手写)
回形打印矩阵 找出最长子字符串 数组中的第 K 个最大元素 用 JavaScript 实现一个链表 从上到下打印二叉树
其它
介绍一个你觉得比较有亮点的项目 在创业公司,一个前端项目的生命周期是怎么样的 在团队中,你是如何制定编码规范的,如何推动规范落地的 你还有什么问题想问我的
不要频繁跳槽
文章开始的时候有提到「不要频繁跳槽」,这里谈谈个人的看法。
对于面试官和 HR 来说,「频繁跳槽」意味着两点:
你的稳定性不足,得承担给你发了 offer 之后你来到公司过了一段时间又跑路的风险,所以会是减分项 你没有足够的沉淀,技术和业务的沉淀是要时间的,对业务有深入的理解才能思考如何通过技术手段来解决业务上的问题
对于个人来说,「频繁跳槽」意味着:
一直在准备面试,一直在刷题,没有一个专项学习的时间段 技术栈一直在变,一直在适应,没法更深入的理解 对业务不理解,对团队不熟悉,恶性循环,又想跳槽
总结
这篇文章主要还是记录一下自己这段时间以来的一些经历,希望对大家能有帮助。之后也会输出一些「全干工程师」的技术文章在这里,感兴趣的朋友可以先关注。
当然,如果有空,我也会将我对上面面试题的回答都整理一下,发在社区上。
这里的面试题都非常基础,没什么难度。如果这些算法题目你搞不定,我也建了一个专门搞算法的公众号:力扣加加,感兴趣的朋友可以关注一下。
爱心三连击
1.看到这里了就点个在看支持下吧,你的在看是我创作的动力。
2.关注公众号脑洞前端,获取更多前端硬核文章!加个星标,不错过每一条成长的机会。
3.如果你觉得本文的内容对你有帮助,就帮我转发一下吧。