2021前端面试题终结版

本文深入探讨前端面试中常见的问题,如div垂直居中的多种实现方式,rem与em的区别,以及Cookie、localStorage、sessionStorage的比较。同时涉及CSS3动画、原型链理解、this指向的场景分析、SPA单页面应用的优缺点,以及v-model的工作原理。此外,还介绍了防抖和节流这两种性能优化策略。
摘要由CSDN通过智能技术生成
1. 如 何 实 现 ⼀ 个 d i v 垂 直 居 中 ( ⾄ 少 3 种 ⽅ 法 ) \color{YellowGreen}{1. 如何实现⼀个div垂直居中(⾄少3种⽅法) } 1.div3

:其实实现水平垂直剧中方法有很多:
第一种:定位:

  • 第一种思路
    通过给div设置绝对定位,
    并且left,right,top,bottom设置为0,margin:auto即可 以水平垂直居中
  • 第二种思路
    通过给div设置绝对定位,.left为50%,top为50%,
    再给div设置距左是自身的一半 即:margin-left:自身宽度/2,margin-top:自身高度/2。
  • 第三种思路
    通过给div设置绝对定位,left为50%,top为50%,
    再给div设置跨左和跟上是自身 的一半:transform:translate3d(-50%,-50%,0)
  • 第四种思路
    flex布局:
    思路:有两个div,父级div和子级div,
    给父级div设置display:flex,并且设置父级div的水平 居中justify-content:center,并且给父级div设置垂直居中align-items:center即可
2. r e m 和 e m 的 区 别 ? \color{YellowGreen}{2. rem和em的区别? } 2.remem

:rem和em都是相对单位,主要参考的标签不同:
rem:是相对于根字号,即相对于标签的font-size实现的,浏览器默认字号是font- size:16px
em:是相对于父元素标签的字号,和百分比%类似,%也是相对于父级的,只不过是%相对于父级 宽度的,而em相对于父级字号的

3. C o o k i e , l o c a l S t o r a g e , s e s s i o n S t o r a g e 三 者 的 异 同 ? \color{YellowGreen}{ 3. Cookie , localStorage ,sessionStorage 三者的异同? } 3.CookielocalStoragesessionStorage
在这里插入图片描述

4. c s s 3 动 画 \color{YellowGreen}{ 4. css3动画} 4.css3
:css3动画大致上包括两种:
第一种:过渡动画:主要通过transition来实现,通过设置过渡属性,运动时间,延迟时间 和运动速度实现。
第二种:关键帧动画:主要通过animation配合@keyframes实现 transition动画和animation动画的主要区别有两点:

  • 第一点:transition动画需要事件来触发,animation不需要
  • 第二点:transition只要开始结束两种状态,而animation可以实现多种状态,并且animation是 可以做循环次数甚至是无限运动

5. 原 型 及 原 型 链 理 解 ? \color{YellowGreen}{ 5. 原型及原型链理解? } 5.

原型

  • 函数都带有一个prototype 属性,这是属性是指向构造函数的原型对象,这个对象包含所有实例共享的属性和方法。
  • 原型对象都有一个constructor 属性,这个属性指向所关联的构造函数。
  • 每个对象都有一个__proto__ 属性[非标准的方法],这个属性指向构造函数的原型 prototype

原型链

  • 当访问实例对象的某个属性时,会先在这个对象本身的属性上查找,如果没有找到,则会 通过 proto 属性去原型上查找,如果还没有 找到则会在构造函数的原型的__ proto__中查 找, 这样一层层向上查找就会形成一个作用域链,称为原型链
    6. n e w 操 作 符 做 了 这 些 事 ? \color{YellowGreen}{ 6. new操作符做了这些事?} 6.new
  • 它创建了一个全新的对象
  • 它会被执行[[Prototype]](也就是__proto__)链接
  • 它使this指向新创建的对象
  • 通过new创建的每个对象将最终被[[Prototype]]链接到这个函数的prototype对象上
  • 如果函数没有返回对象类型Object(包含Functoin, Array, Date, RegExg, Error),那么new表达式中的函数调用将返回该对象引用
//模拟new
function objectFactory() {
  const obj = new Object();
  const Constructor = [].shift.call(arguments);

  obj.__proto__ = Constructor.prototype;

  const ret = Constructor.apply(obj, arguments);

  return typeof ret === "object" ? ret : obj;
}

7. t h i s 指 向 的 6 种 情 况 ? \color{YellowGreen}{ 7. this指向的6种情况?} 7.this6

全局中的函数和全局变量可以看作是window的方法和属性所以全局函数中的this指向window;方法中的this指向该方法所指的对象;
this指向函数运行时所属的对象 this不指函数本身,也不指函数所对的作用域,指向调用此函数的对象;

this指向分为六种情况
1)全局函数中的this,在全局环境下调用的时候指向window
注意:如果全局函数内部是严格模式,则在全局环境下不指向window,指向undefined;
2)函数被赋值给某个事件时,指向对象所属的对象
3)this在对象方法中使用时,指向的是方法所属的对象
4)在闭包中this指向window;
5)在构造函数中以及构造函数的原型对象中的this,都指向构造函数的实例对象 var arr=new Array( ) Array是构造函数 arr实例对象
6)箭头函数中的this指向箭头函数所在(定义)的执行环境

8. S P A 单 页 面 理 解 , 以 及 优 缺 点 ? \color{YellowGreen}{ 8.SPA单页面理解,以及优缺点?} 8.SPA

SPA( single-page application )仅在 Web 页面初始化时加载相应的 HTML、JavaScript 和
CSS。一旦页面加载完成,SPA 不会因为用户的操作而进行页面的重新加载或跳转;取而代之的是利用路由机制实现 HTML 内容的变换,UI
与用户的交互,避免页面的重新加载。

优点:

  • 用户体验好、快,内容的改变不需要重新加载整个页面,避免了不必要的跳转和重复渲染;
  • 基于上面一点,SPA 相对对服务器压力小;
  • 前后端职责分离,架构清晰,前端进行交互逻辑,后端负责数据处理;
    缺点:
  • 初次加载耗时多:为实现单页 Web 应用功能及显示效果,需要在加载页面的时候将 JavaScript、CSS 统一加载,部分页面按需加载;
  • 前进后退路由管理:由于单页应用在一个页面中显示所有的内容,所以不能使用浏览器的前进后退功能,所有的页面切换需要自己建立堆栈管理;
  • SEO 难度较大:由于所有的内容都在一个页面中动态替换显示,所以在 SEO 上其有着天然的弱势。

9. v − m o d e l 的 原 理 ? \color{YellowGreen}{ 9.v-model 的原理?} 9.vmodel

我们在 vue 项目中主要使用 v-model 指令在表单 input、textarea、select 等元素上创建双向数据绑定,我们知道 v-model 本质上不过是语法糖,v-model 在内部为不同的输入元素使用不同的属性并抛出不同的事件:

  • text 和 textarea 元素使用 value 属性和 input 事件;
  • checkbox 和 radio 使用 checked 属性和 change 事件;
  • select 字段将 value 作为 prop 并将 change 作为事件
<input v-model='something'> 
相当于
<input v-bind:value="something" v-on:input="something = $event.target.value">

10. 防 抖 和 节 流 ? \color{YellowGreen}{ 10.防抖和节流? } 10.

  • 防抖
    设定一个特定的时间,让函数在特定的时间内执行一次,不会频繁执行。通过定时器实现
  • 节流
    延迟要执行的动作,若在延迟钱的这段时间内,再次触发,则取消之前开启的动作,重新计时。
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2021前端面试真题pdf是一个面向前端开发人员的面试准备资料,里面包含了一系列与前端开发相关的问题和答案。该pdf的目的是帮助前端开发人员更好地准备和应对面试,提高面试成功的机会。 该pdf的内容通常包括以下几个方面: 1. HTMLCSS和JavaScript基础知识:这些问题涉及到HTML标签的用法、CSS属性的应用和JavaScript语法等基础知识点,考察面试者对于前端基础的掌握程度。 2. 前端框架和工具:这些问题涉及到常见的前端框架,例如React、Vue等,以及前端开发常用的工具,例如Webpack和Babel等,考察面试者对于一些流行的前端框架和工具的了解和应用能力。 3. 前端性能优化和安全:这些问题涉及到前端性能优化的技巧和策略,例如减少HTTP请求、缓存、懒加载等,以及前端安全的相关知识,例如跨站脚本攻击(XSS)和跨站请求伪造(CSRF)等,考察面试者对于前端性能优化和安全的了解和实践经验。 4. 前端面试题和项目经验:该pdf中可能包含一些真实的前端面试题目,以及要求面试者提供自己在前端开发领域的项目经验和解决问题的能力,目的是评估面试者的实际应用能力和解决问题的思路。 通过研究和回答该pdf中的问题,前端开发人员可以对自己的前端知识进行系统的总结和复习,为面试做好准备。此外,该pdf还可以帮助面试者了解当前前端开发领域的热点和趋势,更好地适应行业的发展要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值