前端面试合集

html

1.元素
块级元素: 一行一个, 可以控制宽高 ,内边距外边距, 宽度默认是父级宽度100%
行内元素: 一行很多个, 宽高无效, 左右内外边距有效 宽度默认为内容宽度撑开
行内块元素: 一行很多个有间隙, 可控制宽高, 内外边距 宽度默认为内容宽度撑开

2.localStorage、sessionStorage、cookie区别


17cf0c07ccca23789dd68b2eb011d59f.png

3.网站TDK三大标签以及SEO优化
Title(标题):Title 标签用于定义网页的标题,是搜索引擎显示在搜索结果中的标题文字,同时也是浏览器标签页上显示的标题。
Description(描述):Description 标签用于定义网页的描述,是搜索引擎显示在搜索结果中的网页描述文字,帮助用户了解页面内容。
Keywords(关键词): Keywords 标签曾经被用于定义网页的关键词,但由于被滥用和误解,目前大多数搜索引擎已不再依赖于 Keywords 标签。
语义化标签是 H5 新特性,语义化标签有:<header> 定义页面的头部,<footer> 定义页面尾部,<nav> 定义导航链接,<article> 内容标签等。

css

1.如何用CSS3画一条0.5px的直线?

    height: 1px;
    transform: scale(0.5);

2.CSS3盒子模型:标准盒模型、怪异盒模型
box-sizing: content-box:默认值标准盒模型下盒子的大小 = content + border + padding + margin
box-sizing: border-box:border 和 padding 划归到 width 范围内,可以理解为是 IE 的怪异盒模型,怪异盒模型下盒子的大小=width(content + border + padding) + margin

3.清除浮动

  1. 尾部新增元素 clear: both; /* 清除两侧的浮动 */
  2. 父级元素增加: overflow: hidden
  3. 伪元素 clearfix::after { display: block; content: ""; height: 0; overflow: hidden; clear: both; } .clearfix { zoom: 1; }

4.Flex布局


1739790504800.jpg

5.伪元素和伪类的区别和作用?
伪元素:在内容元素的前后插入额外的元素或样式,但是这些元素实际上并不在文档中生成。它们只在外部显示可见,但不会在文档的源代码中找到它们,因此,称为“伪”元素。例如:

p::before {content:"第一章:";}
p::after {content:"Hot!";}
p::first-line {background:red;}
p::first-letter {font-size:30px;}

伪类:将特殊的效果添加到特定选择器上。它是已有元素上添加类别的,不会产生新的元素。例如:

a:hover {color: #FF00FF}
p:first-child {color: red}

6.px、em、rem 的区别?
px:像素是最常用的单位之一,用于屏幕上的精确布局。1像素等于屏幕的一个点。
em:em是基于当前元素的字体大小的单位。例如,1em等于当前元素的字体大小。
rem:rem基于根元素(html元素)的字体大小的单位。1rem等于根元素的字体大小。
%:相对于父元素的尺寸进行缩放。例如,width: 50%;会使元素的宽度是其父元素宽度的50%。
vw--vh:vw(Viewport Width)和vh(Viewport Height)分别基于视口的宽度和高度。例如,1vw等于视口宽度的1%。

JavaScript

1、JS基础类型和复杂类型
JS数据基础类型有:
String、Number、Boolean、Null、undefined五种基本数据类型,加上新增的两种ES6的类型Symbol、BigInt

JS有三种 复杂类型 (引用数据类型):
Object(对象)、Array(数组)、function(函数)

2、箭头函数与普通函数的区别?
(2) 箭头函数没有自己的this
它只会在自己作用域的上一层继承this。所以箭头函数中this的指向在它在定义时已经确定了, 之后不会改变。
(3) call()、apply()、bind()等方法不能改变箭头函数中this的指向
(4) 箭头函数没有自己的arguments对象。在箭头函数中访问arguments实际上获得的是它外层函数的arguments值。

3、null和undefined区别
undefined: 变量被声明了还没有赋值,就为undefined
null: null表示一个值被定义了,但是这个值是空值

typeof null; // 'object'
typeof undefined; // 'undefined'

4、闭包的理解?
内部函数访问外部函数的一个变量就会形成闭包
变量会一直在内存中, 持久化存储数据到内存中

function outerFunction() {
  let outerVariable = '我是外部变量';
  function innerFunction() {
    console.log(outerVariable); // 访问外部函数的变量
  }
  return innerFunction;
}
  1. js数组放法
    push:往数组尾部添加一个元素。 返回数组的长度。
    unshift:往数组头部添加一个元素。返回数组的长度。
    pop:从数组尾部删除一个元素。返回删除的元素。
    shift:从数组头部删除一个元素。返回删除的元素。
    slice(开始位置,结束位置):截取数组一部分。只有一个元素则是开始位置,直到截取全部
    splice(开始位置,长度,插入元素):删除、修改数组中的一部分元素。
    reverse:反转数组。返回反转后的数组。
    sort:对数组的元素进行排序。返回排序后的数组。
    join:把数组变成字符串。若括号里什么都不写,则默认用逗号分隔。
    toString:把数组变成字符串。
    split:把字符串变成数组。
    concat:合并数组,并返回结果。扩展运算符也可以合并数组。
    Math.min:返回数组最小值元素。
    Math.max:返回数组最大值元素。
    length:获取当前数组的长度。
    查找方法:
    indexOf:查找数组元素,返回第一个找到的元素下标,找不到返回-1。
    includes: 查找数组是否包含某一元素,包含则返回 true,不包含返回 false。

for…in:遍历数组。会遍历数组内所有可枚举的属性,包括原型上的属性和方法。
forEach:遍历数组。不会生成新数组,也不改变原数组,回调函数接收三个值:( 数组的元素,索引,当前数组)
map:通过指定函数处理数组的每个元素,并返回处理后的数组。不会对空数组进行检测,不会改变原始数组。
filter:过滤,检测数组元素,并返回符合条件所有元素的数组。
some:检测数组元素中是否有元素符合指定条件,有则返回 true,若所有元素都不满足判断条件,则返回 false。
修改原数组:push、pop、shift、unshift、splice、reverse、sort、fill。
不修改原数组:slice、concat、indexOf、lastIndexOf、join、toString、filter、every、some、forEach、map、find、findIndex。

for循环和forEach有什么区别?⭐⭐
for 循环的 return 是终止循环 forEach 是返回参数。
for 循环实际上是可以使用 break 和 continue 去终止循环的,但是 forEach 不行。
forEach 不支持在循环中添加删除操作。
for 多数时候都可以使用,一般我们需要知道循环次数。而 forEach 更适合于集合对象的遍历和操作。

  1. var、let和const的区别?
    作用域 -- 变量提升 -- 重复申明 -- 是否可以改变

  2. call、apply和bind区别
    1)传入参数格式的区别
    call 和 bind传入的是参数是一个个传入的,用逗号分隔;apply 传入的是数组,也可以是类数组
    2)执行时机的区别
    call 和 apply 会立即调用,而 bind 返回的是一个改变了 this 指向的函数,你必须调用它才会被执行;

8.浅拷贝和深拷贝区别概念常见情况?

9.事件循环,Promise和async/await的详解

17、函数的防抖和节流是什么?
(1) 防抖:通过 setTimeout 的方式,在一定的时间间隔内,将多次触发变成一次触发。
(2) 节流:让一个函数无法在很短的时间间隔内连续调用,而是间隔一段时间执行,降低触发频率。

42、解决跨域的几种方法?
(1) CORS 跨域资源共享(cross-origin-resource-sharing)
服务器端对于 CORS 的支持,主要就是通过设置 Access-Control-Allow-Origin 来进行的。如果浏览器检测到相应的设置,就可以允许 Ajax 进行跨域的访问——也就是常说的服务器加请求头。前端无需做任何事情,只需要后端使用第三方模块添加响应头即可。

(2) JSONP 解决跨域
借助 script 标签不受同源策略的影响进行数据请求。动态插入 script 标签,通过 script 标签引入一个 js 文件,这个 js 文件载入成功后会执行我们在 url 参数中指定的函数,并且会把我们需要的 json 数据作为参数传入。注意:只支持 GET 请求,不过兼容性比较好,无法判断请求是否失败,安全性不高。

(3) proxy 代理转发
正向代理:借助于我们的服务器,向数据服务器发送数据;
反向代理:与正向代理类似,但是不借助于脚本,而是直接使用服务器映射 url。

55.防抖与节流的区别,并分别用代码表示 ⭐⭐
防抖:触发高频事件后 n 秒内函数只会执行一次,如果 n 秒内高频事件再次被触发,则重新计算时间。作用:防止事件连续或高频触发,让它只触发一次或者最后一次。
节流:高频事件触发,但在 n 秒内只会执行一次,所以节流会稀释函数的执行频率。作用:降低事件触发的频率,比如1s内最多执行一次。

TypeScript

TypeScript 的内置数据类型有哪些?
number:表示数字类型,包括整数和浮点数。
string:表示字符串类型,用于表示文本数据。
boolean:表示布尔类型,只有两个可能的值:true 和 false。
null: 空值。
undefined:未定义的值。
object:表示非原始类型的对象,可以是任意结构的对象。
array:表示数组类型,可用于存储多个相同类型的元素。
tuple:表示元组类型,用于表示具有固定数量和特定顺序的元素组合。
enum:表示枚举类型,用于定义一组命名的常量值。
any:表示动态类型,可以接受任何类型的值。
void:表示空类型,没有任何返回值的类型。
never:表示永远不存在的类型,通常用于表示永远不会返回的函数的返回类型。
unknown:表示未知类型,类似于 any,但对类型安全要求更严格。

vue

虚拟DOM DIFF算法

父子生命周期
父beforeCreate -> 父created -> 父beforeMount -> 子beforeCreate -> 子created -> 子beforeMount -> 子mounted -> 父mounted

第一次页面加载会触发哪几个钩子?

beforeCreate,created,beforeMount,mounted

如果加入了 keep-alive 多两个生命周期:

activated,deactiated

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容