iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >高频web前端面试题实例分析
  • 878
分享到

高频web前端面试题实例分析

2023-07-05 06:07:42 878人浏览 独家记忆
摘要

本篇内容主要讲解“高频web前端面试题实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“高频WEB前端面试题实例分析”吧!面试官:请你简述 var、let、const 三者之间的区别?我:呃

本篇内容主要讲解“高频web前端面试题实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“高频WEB前端面试题实例分析”吧!

面试官:请你简述 var、let、const 三者之间的区别?

我:呃~,好的,三者的作用区别总结如下:

var:最常用的变量;允许重复声明,但会导致数据被覆盖;会产生变量提升;局部变量挂载到全局对象上,会造成全局对象的污染。

console.log(a) // 因变量提升, var a;提到前面但是没有赋值,所以值为undefinedvar a = 1var a = '你好' // var声明的变量会被重新赋值console.log(a) // a会打印被重新赋值的值console.log(window.a) // var声明的局部变量会被挂载到全局变量上,造成全局变量的污染。

letes6新增命令,用法类似var;不允许重复声明;不存在变量提升;常作用于块级作用域而避免局部变量造成全局变量的污染。

let a=10;console.log(a) // 不存在变量提升,所以值为:10console.log(window.a) // 不会造成全局污染,所以值为 undefinedfor(let i =0;i<3;i++){ // 会生成块级作用域,i 的值只能在块级作用域中使用    console.log(i)}console.log(i) // 因为拿不到块级作用域中的值,所以报错。

const:es6新增命令,用于声明常量且值无法被修改;声明常量必须立刻初始化,否则后期赋值报错;不能重复声明;const指向变量的地址, 只要变量名所引用的地址不变就不会报错

const arr = ['小张','小王','小李','小赵']arr[0]='小明'console.log(arr) // ['小明', '小王', '小李', '小赵']const arr = [] // 报错

面试官:请你谈谈对深拷贝与浅拷贝的理解

我:呃~,好的,对两者的理解总结如下:

深拷贝:新数据与原数据互不打扰。

// 扩展运算符在一维数组中是属于深拷贝,在多维数组中属于浅拷贝let arr = [1,2,3]let newArr = [...arr]newArr.push(4)console.log(arr,newArr) // [1, 2, 3],[1, 2, 3, 4]// 深拷贝用法let list = [    {id:1,name:'张三',age:18},    {id:2,name:'李四',age:28},    {id:3,name:'王五',age:38},]let newList = JSON.parse(jsON.stringify(list))newList.pop()console.log(list.length,newList.length) // 3 2

当然,深拷贝也有一种标准写法,如下:

// 标准的深拷贝 => 引用数据类型(数组,对象)function deepClone(source){    const targetObj = source.constructor === Array ? [] : {}    for(let keys in source){        if(source.hasOwnProperty(keys)){            // 引用数据类型            if(source[keys] && typeof source[keys] === 'object'){                targetObj[keys] = source[keys].constructor === Array ? [] : {}                // 递归                targetObj[keys] = deepClone(source[keys])            }else{                // 基本数据类型,直接赋值                targetObj[keys] = source[keys]            }        }    }    return targetObj}let obj = {    name:'张三',    age:18,    hobby:['抽烟','喝酒','烫头'],    action:{        am:'敲代码',        pm:'睡觉'    }}let newObj = deepClone(obj)newObj.name = '李四'console.log(obj.name,newObj.name)// 张三 李四

浅拷贝:新数据会影响原数据。

let arr = [1,2,3]let newArr = arr// 对新数据做出改变,原数据也会发生改变,这种就叫做浅拷贝newArr.push(4) // [1, 2, 3, 4]console.log(arr,newArr) // [1, 2, 3, 4]

说白了,深拷贝是重新获得一个新的数据,且和原来的数据没有任何关系;浅拷贝虽然能得到一个新的数据,但是和原来的数据仍有一定的联系。

面试官:输入URL的那一瞬间浏览器做了什么?

我:呃~,URL是由以下几部分组成

https: 传输协议(Httptcp之间加了一层 TSL 或者 SSL 的安全层)

www:服务器

baidu.com:域名

DNS域名系统会匹配真实的IP,第一次访问正常,第二次访问会将域名解析的IP存在本地用来读取浏览器缓存

输入URL的那一刻经历了:域名 -> DNS域名系统 -> 拿到真实IP -> 建立连接(TCP的三次握手) -> 拿数据,渲染页面 -> 四次挥手

具体实现过程

  • url解析:判断是搜索内容还是请求URL

  • 查找本地缓存:如果有缓存直接返回给页面,没有缓存则进入网络请求阶段

  • DNS解析

  • 通过三次握手建立TCP连接

  • 合成请求头信息,发送http请求

  • 处理响应信息

  • 通过四次挥手断开TCP连接

  • 如果响应状态码301,则重定向

  • 浏览器进行页面渲染:1)解析html,生成DOM树;2)根据CSS计算节点样式,生成stylesheet;3)生成布局树;4)为特定的元素生成独立图层

面试官:说一说cookie sessionStorage localStorage 区别?

我:呃~,好的,他们之间的关系如下:

相同点

都是浏览器存储,都存储在浏览器本地。

区别

  • cookie由服务器或前端写入, sessionStorage以及localStorage都是由前端写入

  • cookie的生命周期由服务器端写入时就设置好的,localStorage是写入就一直存在,除非手动清除,sessionStorage是由页面关闭时自动清除

  • cookie存储空间大小约4kb, sessionStorage及localStorage空间比较大,大约5M

  • 3者的数据共享都遵循同源原则,sessionStorage还限制必须是同一个页面

  • 前端给后端发送请求时,自动携带cookie, session 及 local都不携带

  • cookie一般存储登录验证信息或者token,localStorage常用于存储不易变动的数据,减轻服务器压力,sessionStorage可以用来监测用户是否是刷新进入页面,如音乐播放器恢复进度条功能

面试官:说一说JS数据类型有哪些,区别是什么?

我:呃~,JS数据类型分为两类:一类是基本数据类型,另一类是引用数据类型,如下:

  • 基本类型:string、number、boolean、null、undefined、symbol、bigInt

  • 引用类型: object、array

基本类型存储在栈中,空间小,操作频繁

引用类型存储在堆中,空间大,在栈中存储了指针,指向在堆中的起始地址

注意:Symbol具有唯一性, 不可枚举 使用getOwnPropertySymbols获取

面试官:说一说你对闭包的理解?

我:呃~,内层函数引用外层函数中变量,这些变量的集合就是闭包。

  • 形成的原理:作用域链,当前作用域可以访问上级作用域中的变量。

  • 解决的问题:能够让函数作用域中的变量在函数执行结束之后不被销毁,同时也能在函数外部可以访问函数内部的局部变量。

  • 带来的问题:由于垃圾回收器不会将闭包中变量销毁,于是就造成了内存泄露,内存泄露积累多了就容易导致内存溢出。

  • 闭包的应用,能够模仿块级作用域,能够实现柯里化,在构造函数中定义特权方法、Vue中数据响应式Observer中使用闭包等。

面试官:说一说JavaScript有几种方法判断变量的类型?

我:呃~,好的,总结如下:

typeof(根据二进制判断),不能判断数据类型:null和object

intanceof(根据原型链判断),原生数据类型不能判断

constructor.name(根据构造器判断),不能判断null数据类型

Object.prototype.toString.call()(用Object的toString方法判断)所有类型数据都能判断,记住判断结果打印为:'[object Xxx]'

面试官:说一说null 和 undefined 的区别,如何让一个属性变为null

我:呃~,null 是定义 并赋值null undefined是定义未赋值。

面试官:说一下有什么方法可以保持前后端实时通信?

我:呃~,轮询、长轮询、 iframe流、websocket、SSE。

面试官:说一说伪数组和数组的区别?

我:呃~,好的,总结如下:

伪数组的特点:类型是object、不能使用数组方法、可以获取长度、可以使用for in遍历

伪数组可以转换为数组的方法:Array.prototype.slice.call()、Array.from()、[...伪数组]

哪些是伪数组:函数的参数arguments,Map和Set的keys()、values()和entires()

到此,相信大家对“高频web前端面试题实例分析”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 高频web前端面试题实例分析

本文链接: https://www.lsjlt.com/news/350011.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 高频web前端面试题实例分析
    本篇内容主要讲解“高频web前端面试题实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“高频web前端面试题实例分析”吧!面试官:请你简述 var、let、const 三者之间的区别?我:呃...
    99+
    2023-07-05
  • web前端高频面试题实例代码分析
    本篇内容介绍了“web前端高频面试题实例代码分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!面试官:请你谈谈JS的this指向问题我:呃~...
    99+
    2023-07-05
  • web前端面试题实例分析
    今天小编给大家分享一下web前端面试题实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。面试官:页面导入样式时,使用 l...
    99+
    2023-07-05
  • web前端面试题实例题目分析
    今天小编给大家分享一下web前端面试题实例题目分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。面试官:请你谈一下自适应(适...
    99+
    2023-07-05
  • web前端面试题实例代码分析
    这篇文章主要讲解了“web前端面试题实例代码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web前端面试题实例代码分析”吧!面试官:给定一个元素,如何实现水平垂直居中?我:呃~,针对这个...
    99+
    2023-07-05
  • web前端常见面试题实例分析
    这篇文章主要介绍“web前端常见面试题实例分析”,在日常操作中,相信很多人在web前端常见面试题实例分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”web前端常见面试题实例...
    99+
    2024-04-02
  • web前端面试问答题实例代码分析
    这篇文章主要介绍“web前端面试问答题实例代码分析”,在日常操作中,相信很多人在web前端面试问答题实例代码分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”web前端面试问答题实例代码分析”的疑惑有所帮助!...
    99+
    2023-07-05
  • web前端面试题案例代码分析
    这篇文章主要讲解了“web前端面试题案例代码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web前端面试题案例代码分析”吧!面试官:css 如何实现左侧固定 300px,右侧自适应的布局...
    99+
    2023-07-05
  • web前端高频知识点面试题有哪些
    今天小编给大家分享一下web前端高频知识点面试题有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。var、let、cons...
    99+
    2023-07-05
  • 分享web前端面试题
    这篇文章主要讲解了“分享web前端面试题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“分享web前端面试题”吧!页面导入样式时,使用link和@import...
    99+
    2024-04-02
  • web前端高频面试题及答案有哪些
    这篇文章主要介绍了web前端高频面试题及答案有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇web前端高频面试题及答案有哪些文章都会有所收获,下面我们一起来看看吧。1.vue双向数据绑定的原理?mvvm场景...
    99+
    2023-07-04
  • 前端react面试题实例代码分析
    这篇“前端react面试题实例代码分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“前端react面试题实例代码分析”文章吧...
    99+
    2023-07-05
  • web前端实例分析
    这篇文章主要介绍了web前端实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇web前端实例分析文章都会有所收获,下面我们一起来看看吧。正文这题的规则是这样的给定有一个 Add 函数,要...
    99+
    2023-06-27
  • 分享高级web前端程序员面试问题
    本篇内容介绍了“分享高级web前端程序员面试问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 写 R...
    99+
    2024-04-02
  • 【整理分享】48个前端高频面试题(附答案解析)
    48.vue中keep-alive 的作用< keep-alive >是Vue的内置组件,能在组件切换过程中将状态保留在内存中,防止重复渲染DOM。< keep-alive > 包裹动态组件时,会缓存不活动的组件实例...
    99+
    2023-05-14
    javascript Vue 前端面试题
  • 前端面试题之url、href、src的示例分析
    这篇文章主要介绍前端面试题之url、href、src的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、URL的概念统一资源定位符(或称统一资源定位器/定位地址、URL地址等...
    99+
    2024-04-02
  • Web前端面试题有哪些
    这篇文章给大家分享的是有关Web前端面试题有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。HTML、CSS相关1.网络中使用最多的图片格式有哪些JPEG,GIF,PNG,最流行的是jpeg格式,可以把文件压缩...
    99+
    2023-06-14
  • Web前端有哪些面试题
    这篇文章主要介绍“Web前端有哪些面试题”,在日常操作中,相信很多人在Web前端有哪些面试题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Web前端有哪些面试题”的疑惑有所帮...
    99+
    2024-04-02
  • web前端实习生面试题有哪些
    这篇文章主要介绍“web前端实习生面试题有哪些”,在日常操作中,相信很多人在web前端实习生面试题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”web前端实习生面试题有...
    99+
    2024-04-02
  • 前端面试中字节的笔试题和算法题示例分析
    这篇文章将为大家详细讲解有关字节的笔试题和算法题示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。题目给定一个包含 m x n 个元素的矩阵(m 行, ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作