刚出锅的前端面经60问

430 阅读8分钟

前言

五一过后,忙于复习和安顿,所以近期没有更新,非常抱歉,本文记录面试期间比较频繁的问题,如果这些问题你都没什么大问题,那么我觉得起码评个中级是没问题的!

半个月的时间,大中都有去看,想着之前联系的几个大厂里的大佬,可以帮忙内推一下,但是都卡在了学历这一块,没办法,哎,只能努力试着补一补!最终一共收到6个offer,结果也没想的那么差,于是挑了个还可以的开始新的征途!

电话视频面也好,现场面也好,基本上都是聊一个半小时左右,所以可能有的题记不太清了,但是比较频繁和常见的我记了下来,总结过后有60道题,和大家做一个分享,大家有需要的可以查漏补缺,文章结尾也会附上我复习看的资料。

60问

HTML相关

  1. 细说一下盒模型
  2. 列举块级元素和行内元素,图片是哪一种
  3. BFC原因和解决方法
  4. 为什么要语义化
  5. doctype的作用
  6. link和@import的区别

CSS相关

  1. css设计模式有哪些
  2. 图片如何压缩,png如何转化为jpg,png8,png24,png32区别
  3. 宽高按比例但是不定,高如何缩小一半(考验padding-bottom)
  4. transform的优点
  5. 实现左侧用子元素撑起,右侧宽度自适应(不用flex)
  6. flex有关的css写法

JS相关

  1. 函数如何继承,class继承和他们的区别
  2. 为什么声明的字符串有.toString这种方法
  3. 手写Promise和then
  4. Promise.race的原理和结果
  5. WebSocket原理,和http的区别
  6. 数组中获取单个元素和多个元素
  7. this的指向问题,实现一个伪this
  8. 实现new、apply、call和bind
  9. 一个子函数如何继承两个父函数
  10. js中的类型判断和区别,手写instanceof
  11. 求数组的交集
  12. 0.1+0.2!=0.3的原因和解决方法
  13. setTimeout原理
  14. Map和Set的用法,WeakMap和WeakSet区别
  15. 简单数组和对象数组的去重
  16. Object.defineProperty优缺点
  17. 闭包的优缺点及使用场景
  18. js的链式调用相关
  19. 实现防抖和节流
  20. proxy的用法
  21. 有哪些定时器,它们的返回值和区别是什么

移动端相关

  1. 移动端如何做适配
  2. 遇到的移动端兼容性问题

工程化相关

  1. webpack运行原理或构建构成,plugin和loader的区别
  2. npm更新机制和npm lint的使用
  3. git的使用(至少10条命令)
  4. cdn原理
  5. 前端如何优化

浏览器

  1. v8引擎的原理,浏览器的css和js编译原理或者过程
  2. https是如何加密的
  3. 浏览器的页面渲染原理,说一下本身的资源缓存以及数据缓存
  4. 跨域问题原因和解决方法
  5. 浏览器的垃圾回收机制

算法相关

  1. js实现爬楼梯问题
  2. 排序有哪几种以及区别和复杂度
  3. rsa加密原理

设计模式

  1. 实现发布订阅模式
  2. 实现观察者模式

Vue2相关

  1. vue中scope的作用,以及和BEM的区别
  2. vue-router原理
  3. vue-router什么时候加载,什么时候拦截
  4. vue中的slot插槽原理
  5. vue中的keepalive原理
  6. vue2的响应式原理
  7. vuex的作用和过程,mutation和action的区别
  8. vue中computed和watch的原理和区别
  9. vue中v-model的实现原理
  10. 虚拟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-cli原理到定制前端开发模板

一文搞定webpack构建优化策略

[译] 送你 43 道 JavaScript 面试题

1.5 万字 CSS 基础拾遗(核心知识、常见需求)

「面试题」20+Vue面试题整理

揭秘 Vue.js 九个性能优化技巧

webpack打包原理 ? 看完这篇你就懂了 !

落魄前端,整理给自己的前端知识体系复习大纲(上篇)

落魄前端,整理给自己的前端知识体系复习大纲(下篇)

vue.js源码 - 剖析observer,dep,watch三者关系 如何具体的实现数据双向绑定

一份【超级全面】的前端工程师的自检清单

webpack基本概念、打包流程和热更新原理

24 个面试常问的XX和XX的区别,你真不一定都知道

万字长文!总结Vue性能优化方式及原理

当面试官问Webpack的时候他想知道什么

冴羽的博客,全是干货,看文章一定要看评论

最后,公众号和掘金我也会继续更新,拖更了好久也挺抱歉的,以后尽量不拖更!公众号内回复“60问”可以参与抽奖哦!