文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-07-05 06:30

关注

本篇内容主要讲解“高频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声明的局部变量会被挂载到全局变量上,造成全局变量的污染。

let:es6新增命令,用法类似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: 传输协议(http和tcp之间加了一层 TSL 或者 SSL 的安全层)

www:服务器

baidu.com:域名

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

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

具体实现过程

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

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

相同点

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

区别

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

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

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

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

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

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

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

面试官:说一说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前端面试题实例分析”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯