前言
五一过后,忙于复习和安顿,所以近期没有更新,非常抱歉,本文记录面试期间比较频繁的问题,如果这些问题你都没什么大问题,那么我觉得起码评个中级是没问题的!
半个月的时间,大中都有去看,想着之前联系的几个大厂里的大佬,可以帮忙内推一下,但是都卡在了学历这一块,没办法,哎,只能努力试着补一补!最终一共收到6个offer,结果也没想的那么差,于是挑了个还可以的开始新的征途!
电话视频面也好,现场面也好,基本上都是聊一个半小时左右,所以可能有的题记不太清了,但是比较频繁和常见的我记了下来,总结过后有60道题,和大家做一个分享,大家有需要的可以查漏补缺,文章结尾也会附上我复习看的资料。
60问
HTML相关
- 细说一下盒模型
- 列举块级元素和行内元素,图片是哪一种
- BFC原因和解决方法
- 为什么要语义化
- doctype的作用
- link和@import的区别
CSS相关
- css设计模式有哪些
- 图片如何压缩,png如何转化为jpg,png8,png24,png32区别
- 宽高按比例但是不定,高如何缩小一半(考验padding-bottom)
- transform的优点
- 实现左侧用子元素撑起,右侧宽度自适应(不用flex)
- flex有关的css写法
JS相关
- 函数如何继承,class继承和他们的区别
- 为什么声明的字符串有.toString这种方法
- 手写Promise和then
- Promise.race的原理和结果
- WebSocket原理,和http的区别
- 数组中获取单个元素和多个元素
- this的指向问题,实现一个伪this
- 实现new、apply、call和bind
- 一个子函数如何继承两个父函数
- js中的类型判断和区别,手写instanceof
- 求数组的交集
- 0.1+0.2!=0.3的原因和解决方法
- setTimeout原理
- Map和Set的用法,WeakMap和WeakSet区别
- 简单数组和对象数组的去重
- Object.defineProperty优缺点
- 闭包的优缺点及使用场景
- js的链式调用相关
- 实现防抖和节流
- proxy的用法
- 有哪些定时器,它们的返回值和区别是什么
移动端相关
- 移动端如何做适配
- 遇到的移动端兼容性问题
工程化相关
- webpack运行原理或构建构成,plugin和loader的区别
- npm更新机制和npm lint的使用
- git的使用(至少10条命令)
- cdn原理
- 前端如何优化
浏览器
- v8引擎的原理,浏览器的css和js编译原理或者过程
- https是如何加密的
- 浏览器的页面渲染原理,说一下本身的资源缓存以及数据缓存
- 跨域问题原因和解决方法
- 浏览器的垃圾回收机制
算法相关
- js实现爬楼梯问题
- 排序有哪几种以及区别和复杂度
- rsa加密原理
设计模式
- 实现发布订阅模式
- 实现观察者模式
Vue2相关
- vue中scope的作用,以及和BEM的区别
- vue-router原理
- vue-router什么时候加载,什么时候拦截
- vue中的slot插槽原理
- vue中的keepalive原理
- vue2的响应式原理
- vuex的作用和过程,mutation和action的区别
- vue中computed和watch的原理和区别
- vue中v-model的实现原理
- 虚拟vdom的优缺点
过程
由于我这边是主Vue技术栈的,所以有关react和angular的就没提,Vue3的话,有提到响应式、api等问题,不过回答的不是特别好,因为就像背文档一样,面试官一听就能听出来到底会不会,所以我压根就没准备太多Vue3相关的知识点,主要就是基础牢固,html、css、js必须要扎实,面试期间有做一些有关js的题,比如异步嵌套啥的,掌握好他们的顺序,捋下来就行了,哪怕答案不正确,也可以给面试官讲一下你分析的过程,让他知道你不是瞎编的,虽然没对但是有自己的思路也算是一个较好的处理方式了,但是就要正确答案的话,那就没办法了。
还有就是我强迫自己每天都要手写代码,比如apply、call、bind、this、new、promise、instanceof、发布订阅和观察者等等,先强行记住,然后再捋为什么要这么写,再保证复习其他的东西他们不会忘,基本上后面重写一遍就花5到10分钟的样子,举个例子,面试官问你promise的原理,你是直接讲里面有value、reason、resolve、reject...,还是直接说一句 要不我直接手写好了,我也能给你说一下里面的细节? 很明显的嘛,而且,在强迫自己手写的同时,慢慢的也就真的理解它里面的逻辑了,何乐而不为呢,对吧,反正我每天写完心情错哈哈哈!基础必须扎实!基础必须扎实!基础必须扎实!
除了基础以外,你用的技术栈源码我觉得一定要过一遍,不管是看视频也好,看文章也好,都要过一遍,一般面试除了面基础,肯定还会提到有关框架之类的,如果基础答得好,那起码首先就有一个不错的印象,后面再会一点的话,整体就会很舒服,如果原理觉得回答不上来,那就先把它的用法说明白。
我觉得整个面试过程对于求职者来说就是一个加分的过程,开始不了解是0分,然后面着面着一直加分,只不过是加多少的问题。当然也会有100减分这种想法的面试官,这种我觉得就更要求自己会的多一点,原理多懂一点,扣1分和扣5分我觉得是一样的……反正都是扣……
除此之外的问题,比如浏览器原理啊,项目工程化啊,算法啊什么,也都应该有所了解,哪怕只是个概念,当然用过最好,网上类似的资料也不少,把它们按照问题汇总一下,其实也就那些了,算法就刷leetcode,不管做多少题,起码刷一刷。
除了复习之外,还有就是面试的前后顺序,自从我更新了简历,每天都会有上百个消息来问,有些不想去的再聊的话很耽误时间,所以我就先去了几个不错的中厂“学习”,当然,结果可能有的好,有的坏,不管过没过,目标就是知道我自己还有哪里没复习到,因为同一个级别的岗位,肯定有很多相同的面试题,相同的记一下,不同的记一下,相同的一定要会,不用的以后再面试的时候就成了你的优势,可能他不问,但是你会了,相当于多做一点储备,老是面到相同的题,那种感觉其实很一般,就会怕下一个问到以外的没记住的东西,如果因为这种问题丢了心仪公司的offer,岂不……
面试之余
除了面试期间准备的东西之外,我也有找几个大佬聊相关的东西,非常感谢【零一】、【ssh_晨曦时梦见兮】、【黄轶】【自然醒】和【前端秦爱德】提供更改建议和内推机会的帮助!,当然也有一些其他朋友,也在此感谢他们!
以下是我复习期间看的一些资料,注意要把资料里面带的其他资料一并看完!当然还有红宝书和一些视频什么的,也都是网上找的,大家有需要的也可以自取哈!(看这些资料的前提是官网过一遍!没有什么比说明书更权威!)
vue.js源码 - 剖析observer,dep,watch三者关系 如何具体的实现数据双向绑定
最后,公众号和掘金我也会继续更新,拖更了好久也挺抱歉的,以后尽量不拖更!公众号内回复“60问”可以参与抽奖哦!