你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

2021-10-29-前端面试题-007

2021/11/4 17:16:54

1、简述JavaScript中的基本数据类型都有哪些

数值Number、字符串String、布尔Boolean、Null空值类型、Undefined无效值类型、Symbol唯一值类型 [Object对象类型]

2、简述你对Symbol的认识

SymbolES6中出现的新的语法,表示一种获取唯一值对象的基本数据类型,经常用于模拟类型中的私有属性而出现,如可遍历对象中的迭代器函数属性就是Symbol实现

3、你在开发过程中遇到了git文件冲突的问题,但是产品经理又提交了非常紧急的开发任务,此时你如何处理文件冲突和紧急开发任务的问题?

如果冲突的文件代码量并不是很多,解决时间不影响紧急开发任务,可以先解决冲突然后再开发紧急任务

如果冲突的问题临时无法确定,需要通过git stash命令缓存冲突文件,再git reset回退到上一个正确版本保障项目正确性,git checkout切换到开发分支开发紧急任务;紧急任务开发完成后;在上一个出现冲突的分支上通过git stash pop命令还原缓存的冲突文件,解决冲突并再次提交

本质上来说就是先保障项目的正确性的前提下,开发紧急任务!

4、简述var let声明变量的优缺点

var是原生JS中声明变量推荐的方式,let是ES6语法中推荐声明变量的方式,项目中开发中优先推荐使用let声明并使用变量;

var声明的变量最大的优点是声明预解析,可以最大程度的保障声明的数据在其作用域空间中使用不会出现语法问题!

let声明的变量最大的优点就是明确了具体的作用域空间,同时强制确定了变量必须先声明后使用的规则,所以在新项目中使用优先推荐let关键词

5、for..of循环的本质是什么?如何让自己定义的类创建的对象支持for..of循环

for..of循环是ES6语法中提供的一种新的数据遍历语法,可以很方便的对数据集中的数据进行遍历操作,底层是通过Symbol定义的迭代器函数实现的

自定义类型如果要支持for..of循环遍历的功能,可以在类型中按照固定语法声明自定义的遍历函数[Symbol.iterator]实现遍历功能

6、简述原生JS面向对象和ES6新的面向对象语法的优缺点

原生JS中本质上没有面向对象的独立的语法,主要通过函数结合原型链进行模拟的面向对象,在开发过程中的优缺点如下:

优点:语法简单,通过原生函数语法和原型链的操作直接实现,本质上函数的扩展

缺点:思想上的转换,将函数当成类型使用,使用方式上和语法上都有一定的扩展,原生JS面向对象的实现方式上门槛较高

ES6语法中面向对象提供了独立的语法

优点:面向对象有自己独立的语法,可以很方便的完成面向对象的程序设计开发

缺点:新的语法学习成本提高了,底层的实现并没有进行重构,所以底层原理的理解上相比较原生JS语法成本提高了

所以开发过程中如果JS用于浏览器一侧的效果开发,优先推荐函数式开发;如果是用于NodeJS的服务端的开发,优先推荐使用面向对象的语法开发

7、NodeJS如何初始化项目应用?

NodeJS为了方便前端/后端项目的独立管理,通过node init命令初始化一个项目文件夹为NodeJS应用,初始化完成后会在文件夹中生成标志性配置文件package.json,文件中存储了当前项目的初始配置

8、简述package.json配置文件中都有哪些常见配置项?

package.json配置文件是NodeJS应用标志性配置文件,包含了

name:项目名称

author:项目作者

version:项目版本

scripts:项目脚本命令

dependencies:项目第三方依赖

main:项目入口文件

...等等相关配置项

这样的东西没有必要背下来,NodeJS项目使用一段时间之后多看看自然就记住了!

9、NodeJS中如何添加第三方模块?

一般情况下我们会使用node init命令初始化一个Node应用,然后在应用中通过npm命令安装第三方模块

npm install <模块名称> -g  

或者 npm install <模块名称> -S

10、npm 命令安装模块,添加-g选项和-S选项有什么区别?

安装模块的命令npm install <模块名称> 选项

-g选项表示全局安装,安装的模块在当前计算机中的任何NodeJS应用中都可以访问

-S选项表示局部安装/项目安装,安装的模块只在当前项目中使用,项目开发中除了通用模块之外建议使用项目安装的方式