【前端面试】 - 观远数据电话面试题

2023-10-24 15:59

本文主要是介绍【前端面试】 - 观远数据电话面试题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

观远数据电话面试题

1. 数据结构中对堆栈链的理解

以链表形式构建的堆栈数据结构,可以实现动态增加节点,无需预先分配内存。

2. js中哪些数据是放在堆中,哪些数据是放在栈中?js的基本数据类型和对象有哪些的,null放在哪里?

js的基本数据类型:

空类型:undefined null
值类型:基本数据类型 String Number Boolean
引用型:复杂数据类型 Object Array 对象

值类型的值在栈空间存储,引用类型的对象在堆中存储,地址在栈中存储
基本类型(值类型)在调用函数的时候,传递的是值
引用类型,在函数调用的时候,传递的是地址(引用)

javascript中的null

null值表示一个空对象指针,而这也正是使用typeof操作符检测null值会返回“object”的原因,所以null放在堆中存储

3. es6中对Array的改进有哪些?

  • Array.of 创建一个包含所有参数的数组
  • Array.from 接受可迭代对象或类数组对象,最终返回一个数组
  • find方法和findIndex方法

    let numbers = [25, 30, 35, 40, 45]
    console.log(numbers.find(n => n > 35))//40
    console.log(numbers.findIndex(n => n > 35))//3
  • Array.fill 用指定的值填充一至多个数组元素
  • copyWithin方法
  • 定型数组 定型数组的length属性是一个不可写属性,所以不能修改定型数组的大小

    let buffer = new ArrayBuffer(10)
    let buffer2 = buffer.slice(4, 6)
    console.log(buffer2.byteLength)//2

4. const、let、var比较

clipboard.png

5. 怎么实现只对对象的某个属性实现保护

  • const命令只是保证变量名指向的地址不变,并不保证该地址的数据不变
  • 如果真的想将对象冻结,应该使用Object.freeze方法。
  • 使用闭包可以实现只对对象的某个属性的保护

6. 对闭包的理解,闭包有什么作用,怎么样实现属性私有化?

闭包:实现在函数内部的函数
闭包的作用:

  • 读取函数内部的变量
  • 让这些变量的值始终保存在内存中

闭包的缺点:

  • 使用闭包会导致函数中的变量始终保存在内存中,造成内存泄露,解决方法是在调用最后将不使用的变量设置为undefined进行回收。
  • 闭包会在父函数的外部改变父函数内部的值

实现属性私有化:
通过闭包实现

var ClassA = function()
{var name = "yourname"; //私有属性var privateMethod = function() //私有方法{alert("private");};//getterthis.getName = function() {privateMethod();return name;}//setterthis.setName = function(newName){name = newName;}
};

7. Array有哪些方法,哪些方法是改变数组本身的,怎么样判断对象是数组,isArray是谁的方法?

不改变数组的方法:

  • Array.slice()
  • Array.join()
  • Array.concat()
  • Array.isArray()

改变数组的方法

  • Array.splice()
  • Array.shift()
  • Array.unshift()
  • Array.pop()
  • Array.push()
  • Array.sort0()
  • Array.reverse()

怎么判断对象是数组的

function judgeArr(arr){ return Array.isArray(arr); //或者 Object.prototype.toString.call(arr) == '[object Array]' 
}

isArray是Array的方法

8. 怎么实现数组的遍历,有哪些方法?

js有如下两种数据需要经常遍历
数组(Array)
对象(Object)

同时又提供了如下8种方法方便我们遍历元素

  • for (推荐)
  • while(或do~while)(推荐)
  • forEach
  • for in (速度最慢)
  • $.each
  • $(selecter).each
  • map
  • every

9. Array的forEach方法里有return会怎么样?

forEach方法放入break会报错,return也无法跳出循环
如果需要在遍历中跳出循环,可以使用Array.some()[return true时跳出循环]或者Array.every()[return false时跳出循环]

10. 如何组织代码实现输出两个数组中相等的元素的?元素可能有基础数据类型和对象。

遍历,== 或者 === 判断即可

11. 为什么要有事件捕获和事件冒泡两个阶段?

事件捕获 指的是从document到触发事件的那个节点,即自上而下的去触发事件。相反的,事件冒泡 是自下而上的去触发事件。绑定事件方法的第三个参数,就是控制事件触发顺序是否为事件捕获。true,事件捕获;false,事件冒泡。默认false,即事件冒泡。Jquery的e.stopPropagation会阻止冒泡,意思就是到我为止,我的爹和祖宗的事件就不要触发了。
clipboard.png

至于为什么会并存两种完全不同的触发顺序,是因为IE用的是冒泡,其他都是捕获顺序。

12. 什么是事件代理,怎么判断是哪个节点触发了,target和currentTarget的区别

当网页中需要触发事件的对象比较多的时候,为了避免内存泄漏,我们把事件委托到其父对象上,比如li上的事件委托到ul上,也可以称为交给ul进行代理。

$("ul").on("mouseover",function(e){$(e.target).css("background-color","#ddd").siblings().css("background-color","white");
})

e.target可以判断事件发生的源节点。
event.target返回触发事件的元。
event.currentTarget返回绑定事件的元素。

13. 隐藏元素的几种方法

CSS方法

  • opacity: 0 通过调整透明度从视觉上隐藏元素,元素依旧占据位置并对网页的布局起作用,也会影响用户交互。
  • visibility: hidden 设置可见或者不可见,被隐藏的元素依然会对网页布局起作用,但不会影响用户交互。
  • diaplsy: none 隐藏元素,确保元素不可见并且连盒模型也不生成,被隐藏的元素不占据任何空间。
  • position:absolute 配合 top 和 left 属性,将元素移出可视区域,不会影响布局,又能让元素保持可操作。

JS方法

  • DomNode.delete(Node) 通过JS来删除DOM树的节点,实现元素隐藏,缺点是如果要再显示该节点,需要添加该节点
参考文章
JavaScript 深拷贝性能分析 - 前端进阶 - SegmentFault 思否
使用slice和concat对数组的深拷贝和浅拷贝 - 白杨-M - 博客园

这篇关于【前端面试】 - 观远数据电话面试题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/weixin_34138521/article/details/88752244
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/276270

相关文章

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python使用vllm处理多模态数据的预处理技巧

《Python使用vllm处理多模态数据的预处理技巧》本文深入探讨了在Python环境下使用vLLM处理多模态数据的预处理技巧,我们将从基础概念出发,详细讲解文本、图像、音频等多模态数据的预处理方法,... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

SpringBoot中4种数据水平分片策略

《SpringBoot中4种数据水平分片策略》数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题,下面小编就来和大家分享4种数据分片策略吧... 目录一、前言二、哈希分片2.1 原理2.2 SpringBoot实现2.3 优缺点分析2.4 适用场景三、范围分片

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模