前言
自从到职后,除了略微放松一下,劳动了几天,筹备面试也成了日常中的一环,间隔上一次面试曾经有超过五年的工夫了,所以系统性的筹备还是有必要的,这阵子也陆陆续续投了不少的简历,加入了不少面试,现在的面试体验和从前齐全不同,这里简略分享下我最近的面试感触
总体流程
作为一名技术人,平时都只是在卷技术,进去了才发现,原来招聘流程也这么卷了!技术面两面起步,很多公司光技术面就要三轮,三轮过后还可能要加面,技术面完 HR 面,HR 面完还要有 Offer 审批 … 而且每一轮面试并不是在同一天进行的,这就把整个面试流程拉得很长,相当浪费时间。几年前在面网易时,尽管也有两轮技术 + 一轮 HR 面,但一个下午 1~4 点就全副搞定了,现在,时代变了
根底局部
一面免不了前端根底和一些八股问题,接下来分享下我最近面试遇到的一些面试题:
- JS 中根本类型和援用类型的存储形式
- JS 中的垃圾回收形式
- BFC 的概念,触发条件,应用场景
- position 的值有哪些,别离绝对于什么定位
- script 标签 defer 和 async 的区别
- js 中如何判断 this 的指向
- 浏览器中的 eventloop(高频
- 谈一下对浏览器缓存的了解(高频
- 对 http2 的理解
- commonjs 和 ES Module 的区别(高频
- 页面性能指标有哪些,如何计算
- 前端性能优化罕用形式
- webpack loader 和 plugin 的区别
这些问题的答案网络上一搜一大把,只有有筹备都不至于答不上来,不过如果你有肯定的工作教训,面试官会更深刻问一些细节,以浏览器缓存为例,大部分同学都能够答出“分为强制缓存和协商缓存两类,强制缓存不须要向服务器发送申请,协商缓存则须要发送申请,通过 304 code 判断是否须要应用缓存”,如果面试官持续诘问哪些申请 / 响应头是和协商缓存相干的,有什么区别,如果让你来设计利用的缓存策略该如何抉择时,如果没有相干实际,就没那么容易答上来了
eventloop 和 cjs/ESM 区别是很高频的题目,倡议大家准备充分
我的项目相干
一面偏重根底,根底过关之后,二三面更偏重我的项目,也会有一些场景设计题,这部分次要考查候选人的我的项目教训和技术深度,解决问题能力等,简略说下我遇到的:
我的项目相干(我的简历里有写搭建平台,小程序跨端开发,和 IM 零碎等):
- 你在工作中遇到过哪些印象粗浅的问题,是如何解决的
- 搭建平台的实时预览性能是怎么做的
- IM 性能是通过什么技术实现的,做 IM 零碎须要留神哪些问题
- 小程序跨端如何实现?跨端框架如何做到视图层框架无关
- 小程序性能优化办法有哪些
场景题:
- 如果让你设计一个前端监控 SDK,你会如何设计
- App 中从广告位跳转到广告页性能较差,如何优化
作为一个业务开发,对工作中遇到的问题,或是说业务痛点这个事,我起初的思维比拟局限,总感觉用了一些新技术,或是有深度的货色解决了业务需要,才值得拿出来说,但其实并非如此,大多数业务需要都不会难到要靠各种算法,深层技术去解决,咱们能够从其余角度去看这个问题:开发业务需要也是咱们每天的工作内容,开发流程中的难点,也有很多可讲之处,比方中后盾开发,标准化和提效始终是痛点,通过定制开发标准,接口标准进步接口交付效率,通过搭建计划,或是简略的模板 +CLI 疾速创立页面,积淀对立视觉标准的组件库等,都是在通过技术手段,解决研发效率和标准化的难题。另外,中后盾的用户体验是从前始终被大家忘记的中央,但前端作为离用户最近的技术同学,不能仅满足本人开发的零碎“能用”,更要让它“好用”,最初让用户“爱用”,这就要求技术同学有发现业务问题的能力,发现问题的路径有很多:
- 本人多应用本人开发的零碎
- 通过埋点监控上报的数据,能够剖析出用户的行为习惯,开掘潜在问题
- 考察问卷
如果在工作中有过以上实际,阐明你发现问题和解决问题的能力都很棒👍
手写 && 算法
一开始我据说前端面试须要筹备算法时,我是比拟震惊的,毕竟算法这货色如果不是架构组开发的话,平时真的很少碰,后果发现当初 80% 的公司面试都要求会一些根底算法和手写题,贴一些我遇到的:
算法:
- 全排列
- 最长公共子序列
- 零钱兑换
- 合并区间
- 爬楼梯
- 返回无序数组第 K 大的数字
- 无反复的最长子串
手写题:
- 手写 Promise.all
- 并发申请管制(超高频
- 繁难 koa-compose
- async-add
算法和手写题难度适中,只有认真筹备,和开卷考没什么区别,如果不晓得从哪下手,倡议以 CodeTop 做下参考,我本人做了前端岗位 Top100 的算法题,笼罩到了我面试的全副算法题。所以算法手写局部与其说是考查算法能力,不如说是考查筹备用心水平,毕竟考的都是 easy,medium 水平的算法,都很惯例,不至于看不懂。而且手写题,面试官也不会出代码量过大的题,岂但候选人写起来工夫长,面试官看起来也劳神,所以手写局部都是一些简略实现,几十行代码就能够搞定,再简单的写一下伪代码,说一下思路就好
有的同学可能会问:easy 难度的算法有什么好考的?然而,我在面试中就遇到了几个 easy 难度的题,这些题并没有呈现在一面,而是呈现在了二三面中。一道题的解法有很多种,每种解法的工夫,空间复杂度又不肯定雷同,当面试官出了一道 easy 难度的算法题时,想考查的相对不是你能不能解出这道题,而是想适当做一下进阶:能不能优化一下工夫,空间复杂度?所以倡议各位在刷题时,如果遇到了 easy 的题,能够看一下题解,把握多种解法,面试时,先写出根本解法,面试官问到是否优化时,先外表考虑几秒,而后写出最优解😆
最初
以上是我最近对本人面试的一些心得,和大家简略分享一下,心愿对大家有帮忙~