前言
现在百度,阿里,腾讯,字节跳动等大厂的面试真题、面经随处可见。甚至还有多家教育机构专门针对这一部分设计了课程,但是中小厂的面经倒是很稀缺。
但其实中小厂面经的需求还是有的,很多的开发者可能由于地理,能力,兴趣,志向的不同,短期或长期并没有进入大厂的打算,即便可以通过网上的各种渠道获取到所谓的 “题海” 。然后疯狂的刷面试题,进行题海战术,但还是对面试感到迷茫。
我本人正是由于这样那样的原因(当然还是实力不行),短期内并没有进入大厂的打算,再加上最近准备跳槽,所以亲身在大连选择了近十家中小企业进行了面试,采用录音的形式将面试题记录下来,并整理出本篇坐标大连的中小厂面经。
为了避免产生不必要的麻烦,公司名采用 ,, 进行处理。
本文的主旨是 面经,而非 面试题 的整合,文中会对部分面试题进行讲解,也会放出很多我认为很优秀的文章链接,也会有部分我在面试中的经历和我当时是怎么回答这个问题的,只是给大家提供个 思路,绝非 标准答案。
公司上来会问几道基础题,问题之间没有什么逻辑。然后就会根据简历的内容和回答的情况进行追问,我的简历基本都是 技术栈的,由于 公司是朋友内推的,可能是他们公司不用 ,所以不关心,也就没有问到 技术栈的任何问题,也没有问到有关项目经验的问题。
谈一谈 盒模型
多种方式实现上面 下面自适应的布局
都有哪些属性
块元素和行内元素、行内块元素的区别
原型和原型链
是什么
函数有没有 属性
谈一谈 数据类型
如何判断数据类型的多种方式,有什么区别,适用场景
如何一次进行多个异步请求
的返回机制是什么
如果想要其中一个请求出错了但是不返回结果怎么办
打包优化知道多少
大前端了解吗
如何启动一个服务器
都做了什么
洋葱圈模型原理
洋葱圈和 中间件有什么区别
长列表优化,一万条数据不用分页和懒加载,如何提升性能
数据请求从发起到接收数据之间发生了什么
前端安全了解吗
和 是什么,如何避免
前端怎样对用户的数据进行加密传输
基于 提升安全性
👉👉 【面试题解】CSS盒子模型与margin负值[2]
布局
布局
一.块级元素
(1)常见的块元素有哪些?
常见的块元素有等,其中 标签是最典型的块元素。
(2)块级元素有什么特点?
自己独占一行
高度,宽度、外边距以及内边距都可以控制。
宽度默认是容器(父级宽度)的
是一个容器及盒子,里面可以放行内或者块级元素
(3)注意问题:
只有文字才能组成段落,因此 标签里面不能放块级元素,特别是 标签不能放 。同理还有这些标签 ,他们都是文字类块级标签,里面不能放其他块级元素。
二.行内元素
(1)常见行内元素有哪些?
常见的行内元素有 等,其中 标签最典型的行内元素,也称内联元素。
(2)行内元素有哪些特点?
相邻行内元素在一行上,一行可以显示多个
高、宽直接设置是无效的
只可以设置水平方向的外边距
默认宽度就是它本身内容的宽度
行内元素只能容纳文本或则其他行内元素
(3)注意问题:
链接里面不能再放链接。
特殊情况 里面可以放块级元素,但是给 转换一下块级模式最安全。
三.行内块元素
(1)常见行内块儿元素有哪些?
在行内元素中有几个特殊的标签 ,可以对它们设置宽高和对齐属性,有些资料可能会称它们为行内块元素。
(2)行内块元素有什么特点?
和相邻行内元素(行内块)在一行上,但是之间会有空白缝隙,一行可以显示多个。
默认宽度就是它本身内容的宽度。
高度,行高、外边距以及内边距都可以控制。
四. 块级元素、行内元素和行内块元素的区别
五. 块级元素、行内元素和行内块元素互转
块转行内:;
行内转块:;
块、行内元素转换为行内块:;
👉👉 深入Javascript系列(六):原型与原型链[3]
函数都是由 原生构造函数创建的,所以函数的 属性指向 的 属性。
👉👉 【面试题解】Javascript数据类型相关的六个面试题[4]
👉👉 【面试题解】谈一谈Javascript数据类型判断[5]
答:利用 。
除了 ,还有其他几个原型方法也要知道。
👉👉 看了就会,手写Promise原理,最通俗易懂的版本!!![6]
答:使用 。
👉👉 玩转 webpack,使你的打包速度提升 90%[7]
构建上下文
构建洋葱圈模型。
👉👉 浅析koa的洋葱模型实现[8]
👉👉 Koa2 和 Express 中间件对比[9]
👉👉 后端一次给你10万条数据,如何优雅展示,到底考察我什么?[10]
这个我不会,也没有找到什么有效的资料,希望有大佬可以指点一下。
👉👉 浅说 XSS 和 CSRF[11]
答:,我其实不太了解,只是用 做过登录注册的密码加密,也不会别的了。
答:,我开玩笑的,有没有大佬可以指点一下。
公司上来就是个咔咔咔一顿问,没有什么逻辑,问完一个就换下一个,像一个没有感情的提问机器,没有问到项目经验相关的问题,刷过面试题的基本都能应对自如,整体来说非常简单,这种基本上就是招 ,能干活就行,薪资不会开到太高。
有什么区别
遍历数组的 种方法
说一下 有哪些优点和特点
什么是虚拟
组件间传值的 种方式
有哪些内置指令
和 有什么区别
如何让 只在当前组件中起作用
如何解决 初始化页面闪动问题
什么是 ,有什么优点和缺点
首屏渲染优化有哪些
生命周期函数有哪些
第一次页面加载会触发哪几个钩子
在哪个生命周期中发起数据请求
有几种模式
和 有什么区别
有哪些属性
常用命令了解哪些
搭一个新项目的框架,需要考虑哪些问题
如何做权限认证
如何做 数据
(1)块级作用域: 块作用域由 包括, 和 具有块级作用域, 不存在块级作用域。块级作用域解决了 中的两个问题:
内层变量可能覆盖外层变量
用来计数的循环变量泄露为全局变量
(2)变量提升: 存在变量提升, 和 不存在变量提升,即在变量只能在声明之后使用,否在会报错。
(3)给全局添加属性: 浏览器的全局对象是 , 的全局对象是 。 声明的变量为全局变量,并且会将该变量添加为全局对象的属性,但是 和 不会。
(4)重复声明: 声明变量时,可以重复声明变量,后声明的同名变量会覆盖之前声明的遍历。 和 不允许重复声明变量。
(5)暂时性死区: 在使用 、 命令声明变量之前,该变量都是不可用的。这在语法上,称为暂时性死区。使用 声明的变量不存在暂时性死区。
(6)初始值设置: 在变量声明时, 和 可以不用设置初始值。而 声明变量必须设置初始值。
(7)指针指向: 和 都是 新增的用于创建变量的语法。 创建的变量是可以更改指针指向(可以重新赋值)。但 声明的变量是不允许改变指针的指向。
👉👉 【面试题解】你了解Javascript常用的的十个高阶函数么?[12]
渐进式框架:可以在任何项目中轻易的引入;
轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十 ;
简单易学:国人开发,中文文档,不存在语言障碍 ,易于理解和学习;
双向数据绑定:在数据操作方面更为简单;
组件化:很大程度上实现了逻辑的封装和重用,在构建单页面应用方面有着独特的优势;
视图,数据,结构分离:使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作;
是 节点在 中的一种抽象数据结构,之所以需要虚拟 ,是因为浏览器中操作 的代价比较昂贵,频繁操作 会产生性能问题。
虚拟 的作用是在每一次响应式数据发生变化引起页面重渲染时, 对比更新前后的虚拟 ,匹配找出尽可能少的需要更新的真实 ,从而达到提升性能的目的。
虚拟 的实现原理主要包括以下 3 部分:
用 对象模拟真实 树,对真实 进行抽象;
算法 — 比较两棵虚拟 树的差异;
算法 — 将两个虚拟 对象的差异应用到真正的 树。
(1) 适用 父子组件通信
(2) 适用 父子组件通信
:如果在普通的 元素上使用,引用指向的就是 元素;如果用在子组件上,引用就指向组件实例
(3) / / :访问父 / 子实例 / 根实例
(4) 适用于 父子、隔代、兄弟组件通信
这种方法通过一个空的 实例作为中央事件总线(事件中心),用它来触发事件和监听事件,从而实现任何组件间的通信,包括父子、隔代、兄弟组件。
(5)/ 适用于 隔代组件通信
:包含了父作用域中不被 所识别 (且获取) 的特性绑定 ( 和 除外 )。当一个组件没有声明任何 时,这里会包含所有父作用域的绑定 ( 和 除外 ),并且可以通过 传入内部组件。通常配合 选项一起使用。
:包含了父作用域中的 (不含 修饰器的) 事件监听器。它可以通过 传入内部组件
(6) 适用于 隔代组件通信
祖先组件中通过 来提供变量,然后在子孙组件中通过 来注入变量。 主要解决了跨级组件间的通信问题,不过它的使用场景,主要是子组件获取上级组件的状态,跨级组件间建立了一种主动提供与依赖注入的关系。
(7) 适用于 父子、隔代、兄弟组件通信
是一个专为 应用程序开发的状态管理模式。每一个 应用的核心就是 (仓库)。 基本上就是一个容器,它包含着你的应用中大部分的状态 ( )。
的状态存储是响应式的。当 组件从 中读取状态的时候,若 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
改变 中的状态的唯一途径就是显式地提交 。这样使得我们可以方便地跟踪每一个状态的变化。
(8)插槽
可以通过 获取插槽数据。
(9) 适用于任意组件通信
中移除了 ,等方法,所以 不再使用,相应的替换方案就是
手段: 是动态的向 树内添加或者删除 元素; 是通过设置 元素的 样式属性控制显隐;
编译过程: 切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件; 只是简单的基于 切换;
编译条件: 是惰性的,如果初始条件为假,则什么也不做;只有在条件第一次变为真时才开始局部编译; 是在任何条件下,无论首次条件是否为真,都被编译,然后被缓存,而且 元素保留;
性能消耗: 有更高的切换消耗; 有更高的初始渲染消耗;
使用场景: 适合运营条件不大可能改变; 适合频繁切换。
在组件中的 标签中加上
使用 开发时,在 初始化之前,由于 是不归 管的,所以我们写的代码在还没有解析的情况下会容易出现花屏现象,看到类似于 的字样,虽然一般情况下这个时间很短暂,但是我们还是有必要让解决这个问题的。
首先:在 里加上 。如果没有彻底解决问题,则在根元素加上
仅在 页面初始化时加载相应的 、 和 。一旦页面加载完成, 不会因为用户的操作而进行页面的重新加载或跳转;取而代之的是利用路由机制实现 内容的变换, 与用户的交互,避免页面的重新加载。
优点:
用户体验好、快,内容的改变不需要重新加载整个页面,避免了不必要的跳转和重复渲染;
有利于前后端职责分离,架构清晰,前端进行交互逻辑,后端负责数据处理;
缺点:
初次加载耗时多:为实现单页 应用功能及显示效果,需要在加载页面的时候将 、 统一加载,部分页面按需加载;
不利于 :由于所有的内容都在一个页面中动态替换显示,所以在 上其有着天然的弱势。
图片压缩/懒加载
禁止生成 文件
路由懒加载
引入公共库
开启 压缩
的生命周期钩子核心实现是利用发布订阅模式先把用户传入的的生命周期钩子订阅好(内部采用数组的方式存储)然后在创建组件实例的过程中会一次执行对应的钩子方法(发布)。
:是 之后触发的第一个钩子,在当前阶段 、、 以及 上的数据和方法都不能被访问。
:在实例创建完成后发生,当前阶段已经完成了数据观测,也就是可以使用数据,更改数据,在这里更改数据不会触发 函数。可以做一些初始数据的获取,在当前阶段无法与 进行交互,如果非要想,可以通过 来访问 。
:发生在挂载之前,在这之前 模板已导入渲染函数编译。而当前阶段虚拟 已经创建完成,即将开始渲染。在此时也可以对数据进行更改,不会触发 。
:在挂载完成后发生,在当前阶段,真实的 挂载完毕,数据完成双向绑定,可以访问到 节点,使用 属性对 进行操作。
:发生在更新之前,也就是响应式数据发生更新,虚拟 重新渲染之前被触发,你可以在当前阶段进行更改数据,不会造成重渲染。
:发生在更新完成之后,当前阶段组件 已完成更新。要注意的是避免在此期间更改数据,因为这可能会导致无限循环的更新。
:发生在实例销毁之前,在当前阶段实例完全可以被使用,我们可以在这时进行善后收尾工作,比如清除计时器。
:发生在实例销毁之后,这个时候只剩下了 空壳。组件已被拆解,数据绑定被卸除,监听被移出,子实例也统统被销毁。
,,,
可以在钩子函数 、、 中进行调用,因为在这三个钩子函数中, 已经创建,可以将服务端端返回的数据进行赋值。
推荐在 钩子函数中调用异步请求,有以下优点:
能更快获取到服务端数据,减少页面 时间;
不支持 、 钩子函数,所以放在 中有助于一致性;
有 3 种路由模式:、、:
hash: 使用 值来作路由。支持所有浏览器,包括不支持 的浏览器;
history : 依赖 和服务器配置。
abstract : 支持所有 运行环境,如 服务器端。如果发现没有浏览器的 ,路由会自动强制进入这个模式.
(1)hash 模式的实现原理
早期的前端路由的实现就是基于 来实现的。其实现原理很简单, 的值就是 中 后面的内容。比如下面这个网站,它的 的值为 :
路由模式的实现主要是基于下面几个特性:
中 值只是客户端的一种状态,也就是说当向服务器端发出请求时, 部分不会被发送;
值的改变,都会在浏览器的访问历史中增加一个记录。因此我们能通过浏览器的回退、前进按钮控制 的切换;
可以通过 标签,并设置 属性,当用户点击这个标签后, 的 值会发生改变;或者使用 来对 进行赋值,改变 的 值;
我们可以使用 事件来监听 值的变化,从而对页面进行跳转(渲染)。
(2)history 模式的实现原理
提供了 来实现 的变化。其中做最主要的 有以下两个: 和 。这两个 可以在不进行刷新的情况下,操作浏览器的历史纪录。唯一不同的是,前者是新增一个历史记录,后者是直接替换当前的历史记录,如下所示:
路由模式的实现主要基于存在下面几个特性:
和 两个 来操作实现 的变化 ;
我们可以使用 事件来监听 的变化,从而对页面进行跳转(渲染);
或 不会触发 事件,这时我们需要手动触发页面跳转(渲染)。
有五种,分别
State:定义了应用状态的数据结构,可以在这里设置默认的初始状态。
Getter:允许组件从 中获取数据, 辅助函数仅仅是将 中的 映射到局部计算属性。
Mutation:是唯一更改 中状态的方法,且必须是同步函数。
Action:用于提交 ,而不是直接变更状态,可以包含任意异步操作。
Module:允许将单一的 拆分为多个 且同时保存在单一的状态树中。
👉👉 Git命令速查表[13]
👉👉 结合代码实践,全面学习前端工程化[14]
答:在路由守卫中根据 地址结合 做权限认证。
答:可以使用
公司首先要在线上申请面试,然后会填一个很长很长的 报名表,填完以后又会填一个很长很长的 问卷,问卷的内容就好像是公众号心理测评一样,跟技术没有丁点关系。然后就让我去公司面试了,面试形式是 ,题目已经整理在下面了,整体来说不算难,手写表格比较恶心一点。然后笔试完了,又给了我一套小学 奥数题,不能用方程式解,这个属实有点坑,这个过了应该还有个面试环节,但是我在笔试环节被毙掉了,也不知道后面是什么情况。
是什么?有什么优缺点
同步和异步的区别
如何解决跨域问题
应用从服务器主动推送 到客户端有哪些方式
经常遇到的浏览器的兼容性问题有哪些?原因是什么?如何解决
有哪些常用的 技巧
前端开发性能优化,你有什么经验
谈谈你对 的看法
主流的前端框架的优缺点是什么
你最喜欢哪个框架,为什么
如何消除一个数组里面重复的元素
如何实现一个幻灯片效果
手写表格
是一种创建交互网页应用的一门技术。
优点:
实现局部更新(无刷新状态下),
减轻了服务器端的压力
缺点:
破坏了浏览器前进和后退机制(因为 自动更新机制)
请求多了,也会出现页面加载慢的情况。
搜索引擎的支持程度比较低。
的安全性问题不太好(可以用数据加密解决)。
同步: 同步的思想是:所有的操作都做完,才返回给用户。这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行,卡死了的感觉)。这种情况下,用户不能关闭界面,如果关闭了,即迁移程序就中断了。
异步: 将用户请求放入消息队列,并反馈给用户,系统迁移程序已经启动,你可以关闭浏览器了。然后程序再慢慢地去写入数据库去。这就是异步。但是用户没有卡死的感觉,会告诉你,你的请求系统已经响应了。你可以关闭界面了。
👉👉 九种跨域方式实现原理(完整版)[15]
轮询
WebSocket
由于我的公司是一个致力于培养用户习惯的公司,遇到兼容问题都是请下载最新版本谷歌浏览器😝,所以我这个其实没有什么实际的经验,只知道 和 。
说实话,没听说过。
👉👉 前端性能优化 24 条建议(2020)[16]
👉👉 当面试官问Webpack的时候他想知道什么[17]
只用过 ,优点上面讲过了,缺点嘛,可能就是不支持 。
同上一个问题。
能实现方式有很多,原理都是对比两个数组,没有就放进去。
👉👉 使用CSS实现一个简单的幻灯片效果[18]
这个面试过程就很随和,面试官是个架构师, 挺高的,不会问八股文,他给我出了几个现实中的场景,然后转换成代码的逻辑,去让我实现他,一共问了没几个问题,不需要背面试题,会由一个问题一直追着问我,然后还会不断的引导我,提示我,直到我啥也答不上来。
一般请求后端接口,你都怎么弄?
你的后端要给你什么样的信息,你才能请求成功呢?
请求参数有什么格式?
如何给后端传递一个文件?
你如何理解前端工程化?
要买个电脑,找 借 ,找 借 ,找 借 ,拿着六千块钱买电脑,抽象成前端的逻辑就是请求不同的接口获取数据,拿到所有的数据之后进行展示,这个怎么实现?
不使用 , 怎么实现?
和 有什么区别?
是为了解决什么问题?
有一批不定数量的人,第一个人去超市买一个东西,第一个人买回来以后第二个人再去买,第二个回来以后第三个再去买,抽象成前端的逻辑如何实现?(其实他想听的答案就是递归,结果我把洋葱圈原理讲了一遍)
如何删除事件监听,一个元素绑定了多个事件,你怎么确认删除的是哪个?
你都如何调试代码?(这个阶段就是打开谷歌控制台,一个个讲各种功能都能干什么事)
谷歌调试工具你都会用什么功能?
怎么进行断点调试?
控制台都能干什么事?
不熟悉的项目,如何找到接口所在的代码?
如果接口地址是动态的呢,是其他接口返回的?
的区别是什么?
然后问了我自己的几个开源项目
因为我带了电脑,所以还看了看我的代码
这个问题其实没有搞懂面试官想问什么,参照接口文档发起请求就行了呗,顶多就是再二次封装一个 。
请求方式
请求参数
👉👉 HTTP 请求参数之三种格式[19]
👉👉 前后端文件上传过程以及方法[20]
👉👉 结合代码实践,全面学习前端工程化[21]
答:使用 或者 。
不知道了😭😭。
答: 是基于 实现,是改良版的 ,使代码看起来更加简洁,异步代码执行像同步代码一样。
答:汇总大量的异步操作结果。
type:事件类型
handler:事件执行触发的函数
false/true: 为冒泡 , 为捕获,参数是 ,表示在捕获阶段调用事件处理程序;,表示在冒泡阶段调用事件处理程序。
需要注意的是,通过匿名函数是无法消除监听事件,只有通过实名函数才能。
答:可以搜接口的地址。
👉👉 理解cookie、session、localStorage、sessionStorage之不同[22]
这个完全没必要去,就当是避雷吧,首先他这个公司的楼非常破,公司内部非常破,像个传销窝点,然后就是他面试官不是个搞技术的,不知道是个什么负责人,问的问题也跟技术没啥关系,因为看到办公环境就不想继续了,所以没录音,也没问什么问题,很快就结束了。
公司其实算不上什么面经,只是提醒大家在找工作之前一定要先看一下目标公司的环境,规模等,从根源上避免像我一样踩雷。
公司两个面试官轮流提问,基本上都不会问八股文的问题,项目经验问的比较多,只要是真实的工作经验,基本都能应对,然后问了我自己的开源项目一些问题,这个是根据简历来的,如果没写是不会问的。第一个面试官感觉是一直在自言自语,我一直在嗯嗯嗯嗯嗯,第二个面试官会在问项目的时候结合我的回答情况,追问一些基础知识,涉及到的都整理在下面了。
面试官一:
我看你掘金了,简单描述一下 ,, 有什么区别和应用场景。(说的好像是我不写他就不问了)
说一说盒子模型?
公司项目负责哪部分功能?
表单和表格封装过么?
表单是怎么封装的?
大数据的表单怎么处理, 选项过多的时候?(优化问题)
学完 有什么想法么? 什么感想?
自己做过脚手架么?
然后就是聊项目········
面试官二:
在公司都做哪些事?项目是干什么的?
然后就是聊项目········
和 有什么区别?
有没有遇到性能优化问题?
从输入 到页面渲染完成之间发生了什么?
浏览器原理了解过么?
状态码都有哪些?
前端如何处理这些状态码?
,, 的区别是什么?
前端安全问题,,
如何解决跨域问题?
跨域问题实际上改的是 里面哪个参数?
👉👉 【面试题解】你了解call,apply,bind吗?那你可以手写一个吗?[23]
👉👉 【面试题解】CSS盒子模型与margin负值[24]
答: 在代码编写层面,可以更好的完成结构和逻辑的复用。 是一个约定大于配置的框架,很多东西人家都给封装好了,按照约定去写就可以了,有利于团队协作。
响应式原理
生命周期钩子名称
自定义指令钩子名称
新的内置组件
算法
👉👉 前端性能优化 24 条建议(2020)[25]
👉👉 史上最详细的经典面试题 从输入URL到看到页面发生了什么?[26]
👉👉 深入理解浏览器工作原理[27]
状态码第一位数字决定了不同的响应状态,如下:
1 表示消息
2 表示成功
3 表示重定向
4 表示请求错误
5 表示服务器错误
1xx
代表请求已被接受,需要继续处理,这类响应是临时响应,只包含状态行和某些可选的响应信息,并一空行结束
常见的有:
(客户继续发送请求,这是临时响应) 这个临时响应是用来通知客户端它的部分请求已经被服务器接收,且仍未被拒绝。客户端印当据需发送请求的剩余部分,或者如果请求已经完成,忽略这个响应,服务器必须在请求完成后向客户端发送一个最终响应
服务器根据客户端的请求切换协议,主要用于 或 升级
2xx
代表请求已成功被服务器接收,处理,并接受
(成功) 请求已成功,请求所希望的响应头或数据体将随此响应返回
(已创建)请求成功并且服务器创建了新的资源
(已创建)服务器已经接受请求,但尚未处理
(非授权信息)服务器已成功处理请求,但返回的信息可能来自另一来源
(无内容)服务器成功处理请求,但没有返回任何内容
(重置内容)服务器成功处理请求,但没有返回任何内容
(部分内容)服务器成功处理了部分请求
3xx
表示要完成请求,需要进一步操作,通常这些状态代码用来重定向
(多种选择)针对请求,服务器可执行多种操作。
(永久移动)请求的网页已永久移动到新位置。
(临时移动)服务器目前从不同位置的网页响应请求,但请求者应该继续使用原有位置来进行以后的请求
(查看其它位置)请求者应当对不同位置使用单独的 请求来检索响应时,服务器返回此代码
(使用代理)请求者只能使用代理访问请求的网页。
(临时重定向)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求
4xx
代表了客户端看起来可能发生了错误,妨碍了服务器的处理
(错误请求)服务器不理解请求的语法
(未授权)请求要求身份验证。
(禁止)服务器拒绝请求
(未找到)服务器找不到请求的网页
(方法禁用)禁用请求中指定的方法
(不接受)无法使用请求的内容特性响应请求的网页
(需要代理授权)此状态代码与 (未授权)类似,但指定请求者应当授权使用代理
(请求超时)服务器等候请求时发生超时
5xx
表示服务器无法完成明显有效的请求。这类状态代码代表了服务器在处理请求的过程中有错误或异常状态发生
(服务器内部错误)服务器遇到错误,无法完成请求
(尚未实施)服务器服务器不具备完成请求的功能
(错误网关)服务器作为网关或代理,从上游服务器收到无效响应
(服务不可用)服务器目前无法使用,(由于超载或停机维护)
(网关超时)服务器作为网关或代理,但是没有及时从上游服务器收到请求
( 版本不受支持)服务器不支持请求中所用的 协议版本
答:在 的请求拦截当中根据不同的状态码进行不同的操作。
👉👉 理解cookie、session、localStorage、sessionStorage之不同[28]
👉👉 浅说 XSS 和 CSRF[29]
👉👉 九种跨域方式实现原理(完整版)[30]
答: ?这个不确定,有大佬可以指点一下。
公司一上来给我展示了一个设计图,让我现场进行布局,很简单,就是一个 和一个 ,还有一个内容区,内容区一个两栏布局,挺简单的。然后就是根据我的简历上写的项目,问几个公司的,问几个我自己开源的,期间会穿插着问一些相关知识点,涉及到的已经整理下面了。
给看了设计图,让现场布局
,, 的区别是什么
的 和
模块化
数组深拷贝
盒子模型
实现斑马线的效果
跨域问题
👉👉 理解cookie、session、localStorage、sessionStorage之不同[31]
👉👉 【初学者笔记】一文学会使用Vuex[32]
👉👉 【初学者笔记】一文学会使用Vuex[33]
👉👉 【面试题解】Javascript的深浅拷贝,如何手写深拷贝?[34]
👉👉 【面试题解】CSS盒子模型与margin负值[35]
答:可以通过伪元素,父级元素使用绝对定位,伪元素使用相对定位,大小和父元素一样,位置重合。再利用 选择器选择奇数行,只给奇数行设置伪元素即可实现。
👉👉 九种跨域方式实现原理(完整版)[36]
公司好像并不是很诚心招人的样子,面试官象征性的问了几个问题就让我回家等消息了,问的都很基础,参考意义不大,等真想招人的时候肯定不是这个样子的。
咱也不清楚是不是年终了在刷绩效,还是说在我去之前已经招够人了,但我已经约面试了也不好意思毁约,有没有类似经历的?
有哪些新特性
都有哪些方法
遍历数组的 种方法
生命周期
和 区别和使用场景
和 的区别
虚拟 和真实 的区别
组件传值的 种方式
和 的优缺点
👉👉 阮一峰ES6 入门教程[37]
👉👉 看了就会,手写Promise原理,最通俗易懂的版本!!![38]
👉👉 【面试题解】你了解Javascript常用的的十个高阶函数么?[39]
公司的面试题中解答过了。
对于Computed:
它支持缓存,只有依赖的数据发生了变化,才会重新计算
不支持异步,当 中有异步操作时,无法监听数据的变化
如果一个属性是由其他属性计算而来的,这个属性依赖其他的属性,一般会使用 computed
如果 属性的属性值是函数,那么默认使用 方法,函数的返回值就是属性的属性值;在 中,属性有一个 方法和一个 方法,当数据发生变化时,会调用 方法。
对于Watch:
它不支持缓存,当一个属性发生变化时,它就会触发相应的操作
支持异步监听
监听的函数接收两个参数,第一个参数是最新的值,第二个是变化之前的值
监听数据必须是 中声明的或者父组件传递过来的 中的数据,当发生变化时,会触发其他操作
函数有两个的参数:
immediate:组件加载立即触发回调函数
deep:深度监听,发现数据内部的变化,在复杂数据类型中使用,例如数组中的对象发生变化。
公司的面试题中解答过了。
虚拟 不会进行排版与重绘操作
虚拟 就是把真实 转换为 代码
虚拟 进行频繁修改,然后一次性比较并修改真实 中需要改的部分,最后并在真实 中进行排版与重绘,减少过多 节点排版与重绘损耗
公司的面试题中解答过了。
是 的超集,即你可以在 中使用原生 语法。
需要静态编译,它提供了强类型与更多面向对象的内容。
最终仍要编译为弱类型,基于对象的原生的 ,再运行。
说明:这个挺中规中矩的吧,大多数也都是网上的面试题八股文,但是他会根据你的回答继续深入的追问,而不是无脑问问题的那种,没有问项目。但是他和上面的文华财经差不多,要先填一个非常长非常长的资料,再做一套跟代码无关的逻辑思维题,然后才能面试,比较麻烦。
盒模型
元素水平垂直居中的方法
和 有什么区别
是什么意思
一个父容器,三个子容器,两边的子容器宽度固定,中间自适应,如何实现?
说一下闭包和函数柯里化
解释一下事件循环,微任务和宏任务都有哪些?
解释一下原型链
所有的对象都有原型吗?
的生命周期
跨域,解决跨域问题的方案
说一下 都有哪些配置,开发环境和生产环境如何选择?
浏览器从输入 到页面渲染之间做了哪些事情?
👉👉 【面试题解】CSS盒子模型与margin负值[40]
👉👉 【面试题解】宽高固定的12种和宽高不固定的29种CSS居中方案。[41]
👉👉 「一劳永逸」48张小图带你领略flex布局之美[42]
👉👉 最强大的 CSS 布局 —— Grid 布局[43]
👉👉 「一劳永逸」48张小图带你领略flex布局之美[44]
布局
布局
👉👉 【面试题解】初识 Javascript 闭包[45]
👉👉 「前端进阶」彻底弄懂函数柯里化[46]
👉👉 做一些动图,学习一下EventLoop[47]
👉👉 深入Javascript系列(六):原型与原型链[48]
答:不是的, 用 创建的对象没有原型。
公司的面试题中解答过了。
👉👉 九种跨域方式实现原理(完整版)[49]
👉👉 当面试官问Webpack的时候他想知道什么[50]
👉👉 史上最详细的经典面试题 从输入URL到看到页面发生了什么?[51]
公司有三个面试官,一个应该是 ,问一些技术无关的问题,两个问技术的,看样子 是很高的。
上来第一句话就是,我看你简历熟悉的不少啊。吓得我赶紧说了解而已。
然后就开始问问题,有基础的,大多数都是难得,也怪我简历上写了很多“熟悉”,几个问题以后我说,我对“熟悉” 有了新的理解。
这个因为面试官进来的比较突然,没来得及录音,再加上当时确实是被问懵住了,没记住几个问题,但实际不止下面这些个,而且大多都是源码,原理什么的。。。没有问项目
我看你熟悉 ,那你讲讲 的模板编译原理吧
为什么要用 啊
讲一讲 的挂载过程
讲一讲 的几种模式和守卫吧
怎样配置路由,如何自定义路由,自定义的和约定路由哪个优先级高
你都用过哪些方法
和 有什么区别
跟 有什么区别,优点和缺点
👉👉 Vue模板编译原理[52]
答:我说的是书写起来更像原生的 。
👉👉 vuex的store是如何挂载到每个组件中[53]
模式前面讲过了
👉👉 【面试题解】vue-router有几种钩子函数?具体是什么及执行流程是怎样的?[54]
答:约定路由, 内部会根据文件路径自动生成路由,自定义路由不会了。
👉👉 看了就会,手写Promise原理,最通俗易懂的版本!!![55]
1. 语法区别
异步使用 回调
异步使用
异步使用
2. 中间件区别
采用洋葱模型,进行顺序执行,出去反向执行,支持 传递数据
本身无洋葱模型,需要引入插件,不支持
3. 集成度区别
内置了很多中间件,集成度高,使用省心
轻量简洁,容易定制
是 的超集,即你可以在 中使用原生 语法。
需要静态编译,它提供了强类型与更多面向对象的内容。
最终仍要编译为弱类型,基于对象的原生的 ,再运行。
其实高频算不上,因为只面试了十家公司,样本容量太小了,但是这么几家都出现多次的题目,可见也是挺热们的,结合实际的面试情况,整理出相对高频的面试题,可以着重看一下,即便是看不懂,不感兴趣,也要强迫自己背一下。
盒模型
一些常用的页面布局要了解
新特性,遍历数组的 种方法
原型和原型链
跟 有什么区别,特点,优点和缺点
的使用及其原型方法
浏览器从输入 到页面渲染之间做了哪些事情
什么是跨域问题,如何解决
前端安全问题
如果你写了自己会 ,可能会问 和 的相关问题
优化
还有就是自己的项目一定要了解,虽然可能确实是自己做的,但是时间长了会忘,建议面试之前再把自己的项目好好看一下,大多数公司还是会占用一定时间去问一下你之前负责的项目的,这个答不上来大概率会让面试官觉得你项目经历是编的,或者不是自己写的,从而扣分。
最终总结了几个面试官常问的非技术类的问题,可以提前准备一下,以免当场卡住,语无伦次导致给面试官留下不好的印象。
做个简单的自我介绍
为什么从上一家公司离职
你觉得上家公司做的怎么样
为什么要干前端
你平时是怎么学习的
看过什么书
你觉得你的优势/不足有什么
举一个例子,证明自己是乐于学习的
你对自己的职业规划
你还有什么想要问我的么
主要介绍一下自己的工作内容,技术栈,稍微带点兴趣爱好什么的也可以。
我回答的主要两个原因,一个是想学习更多东西,另一个是老生常谈的薪资问题。
先大概的夸一夸上家公司,然后再谈一谈让你不想待的原因,千万不要开吐槽大会,抱怨这个,抱怨那个的。比如说我觉得上家公司各种方面做的都不错,无论是公司环境,管理制度,团队氛围都很好,但是技术栈更新比较缓慢,调薪制度不理想。
觉得前端比较有意思,可以看到界面,可以做一下好玩的东西,给父母孩子女朋友显摆。
看纸质书,电子书,视频,博客论坛。
看过什么就说什么,千万不要瞎编。我听说过有的面试官会问你某本书的封面是什么颜色的,目录是什么等奇葩问题。
优势在于主动学习,乐于分享。不足是不感兴趣的内容学习不下去,比如数据库。
掘金社区优秀作者
公司的年度进步奖
四个字,逼格直接上来了,一专多精。
我一般会问技术团队的规模
技术团队有几个人,
几个前端,
几个后端,
高级,中级,初级的分别是多少人
然后就是技术栈
目前在使用什么技术栈
将来打算使用什么技术栈
自己是否可以决定未来技术栈的走向
然后是自己在团队中的角色
负责什么工作
对于项目的决策度
最后祝大家在新的一年里,都能找到满意的工作,升职加薪,赚的盆满钵满!
关于本文
https://juejin.cn/post/7064740689178787871