Node(4),前端开发面试题及答案,html标签之表格标签

var timer = setTimeout(() => {

console.log(1)

}, 2000)

// 清除一次性定时任务

// clearTimeout(timer)

// 在实践队列开始之前,立即执行

setImmediate(() => {

console.log(2)

})

// 在主进程结束后立即执行

process.nextTick(() => {

console.log(7)

})

Node.js 模块

====================================================================

模块(包)是 Node.js 中具有特定功能的对象

  • 模块(包)是 Node.js 应用程序的基本组成部分

  • 大部分前端工程化的工具,是以模块的形式存在的

Node.js 模块的划分方式
  • Node.js 模块

  • 内置模块

  • 官方提供的,跟随 Node.js 一起安装

  • http://nodejs.cn/api/

  • 自定义模块

  • 工程师自己写的

  • 第三方模块

  • 社区维护的,需要单独下载才能使用

  • https://www.npmjs.com/

Web 端 与 Node.js 端的类比
  • Web 端

  • 宿主对象

  • document、window …

  • 自定义对象

  • 工程师自己写的

  • 第三方库

  • jQuery、Bootstrap …

  • Node.js 模块

  • 内置模块

  • fs、path、os、http …

  • 自定义模块

  • 工程师自己写的

  • 第三方模块

  • Less、Babel、Express …

内置模块也叫核心模块,跟随 Node.js 一起安装

核心模块 —— console

=========================================================================

  • 控制台中输出的内容,通过不同的颜色标识不同的变量类型

  • 控制台中可以一次输出多个变量,多个变量之间,用逗号间隔

  • 官方文档:http://nodejs.cn/api/console.html

console.log(“1”)

console.log(1)

var obj = {

name: ‘Tom’,

age: 18

}

console.log(obj)

console.table(obj)

// 计时函数

console.time(‘for’) // 计时开始

for (let i = 0; i < 1000000; i++) {

}

console.timeEnd(‘for’) // 计时结束

console.time(‘while’)

var i = 0

while (i < 1000000) {

i++;

}

console.timeEnd(‘while’)

核心模块 —— process

=========================================================================

  • process 提供了有关当前 Node.js 进程的信息

  • process 是全局变量,使用时无需 require 引入

  • 官方文档:http://nodejs.cn/api/process.html

// process 是全局变量,使用时,无需引入

// const process = require(‘process’)

// console.log(process)

// 输出 node 版本

console.log(process.version)

// 输出操作系统架构

console.log(process.arch)

// 输出操作系统平台

console.log(process.platform)

// 输出当前工作目录 cwd = current working directory

console.log(process.cwd())

// 环境变量

console.log(process.env)

// 自定义环境变量

process.env.NODE_ENV = ‘develop’

console.log(process.env)

// 获取进程的编号

console.log(process.pid)

// 杀死进程 process.kill(进程编号)

核心模块 —— path

======================================================================

  • path 模块提供了有关路径操作的函数

  • 当前目录 ./

  • 上一级目录 ../

  • 使用之前,需要通过 require 引入

  • 官方文档:http://nodejs.cn/api/path.html

// 引入 path 模块

const path = require(‘path’)

// 获取当前文件所在的路径

console.log(process.cwd())

// dir = directory 目录

console.log(__dirname) // 获取当前文件所在的路径

// D:\cliu\Desktop\node\03.core_module\path.js

console.log(__filename) // 获取当前文件的完整路径

// 获取文件的扩展名 ext = extension

console.log(path.extname(__filename))

// 获取路径中的目录部分

console.log(path.dirname(__filename))

// 获取路径中的文件名

console.log(path.basename(__filename))

const t = path.join(__dirname, ‘…’)

console.log(t)

// 将多个路径合并起来

const a = path.join(‘D:/’, ‘a’, ‘b’, ‘c.png’)

console.log(a)

核心模块 —— fs

====================================================================

  • fs (file system) 提供了稳健操作的 API

  • 文件操作

  • 目录操作

  • 使用之前,需要通过 require 引入

  • 官方文档:http://nodejs.cn/api/fs.html

写文件_清空写入

// 文件的写操作

const fs = require(‘fs’)

// 清空写入

// fs.writeFile(‘文件路径’, ‘写入内容’, 回调函数)

fs.writeFile(‘./1.txt’, ‘曾经有一首歌,她感动了我’, (err) => {

if (err) throw err

console.log(‘写入成功’)

})

写文件_追加写入

const fs = require(‘fs’)

// 追加写入

// 语法: fs.appendWrite(‘文件路径’,‘写入内容’, 回调函数)

fs.appendFile(__dirname+‘/2.txt’, ‘曾经有一首歌,她是这样唱的\n’, (err) => {

if (err) throw err

console.log(‘追加写入成功’)

})

读文件

const fs = require(‘fs’)

const path = require(‘path’)

// 读文件

// 指定目标文件所在的路径

// var filename = __dirname + ‘/1.txt’

var filename = path.join(__dirname, ‘1.txt’)

// 语法:fs.readFile(‘文件路径’, 回调函数)

fs.readFile(filename, (err, data) => {

if (err) throw err

// data 是二进制数据,默认输出时,以十六进制的方式展示

console.log(data.toString())

})

删文件

const fs = require(‘fs’)

// 语法: fs.unlink(‘文件路径’, 回调函数)

fs.unlink(__dirname+‘/1.txt’, (err) => {

if (err) throw err

console.log(‘删除成功’)

})

创建目录

const fs = require(‘fs’)

// 创建目录

// 语法:fs.mkdir(‘目录路径’, 回调函数)

fs.mkdir(‘./d1’, (err) => {

if (err) throw err

console.log(‘创建成功’)

})

删除目录

const fs = require(‘fs’)

// 删除目录

// 语法: fs.rmdir(‘目录路径’, 回调函数)

fs.rmdir(‘./d1’, (err) => {

if (err) throw err

console.log(‘删除成功’)

})

// 声明: rmdir 只能删除空目录

// 1. 先删除目录下的普通文件(清空目录)

// 2. 通过 rmdir 删除空目录

重命名目录

const fs = require(‘fs’)

// 重命名目录

// 语法: fs.rename(旧名称, 新名称, 回调函数)

fs.rename(__dirname+‘/d1’, __dirname+‘/d2’, (err) => {

if (err) throw err

console.log(‘重命名成功’)

})

读目录

const fs = require(‘fs’)

// 读目录

// 语法:fs.readdir(‘目录路径’, 回调函数)

fs.readdir(__dirname, (err, data) => {

if (err) throw err

// console.log(data)

data.map((d) => {

// console.log(d)

fs.stat(__dirname+“/”+d, (err, stat) => {

if (err) throw err

if (stat.isDirectory()) {

// 判断当前文件是否是目录

console.log(‘目录:’, d)

} else if (stat.isFile()) {

// 判断当前文件是否是普通文件

console.log(‘文件:’, d)

}

})

})

})

同步函数(synchronization)
  • 同步异步

  • 文件函数

  • 同步

  • writeFileSync

  • readFileSync

  • appendFileSync

  • 异步

  • writeFile

  • readFile

  • appendFile

  • 目录函数

  • 同步

  • mkdirSync

  • rmdirSync

  • readdirSync

  • 异步

  • mkdir

  • rmdir

  • readdir

  • 同步函数

  • 在主程序中自上而下运行

  • 例如:去火车站排队买票

  • 异步函数

  • 通过回调函数在事件队列中运行

  • 例如:委托黄牛买票,票买好后通知我(无需等待,可以做其他事)

fs 事件——文件的复制与压缩

=========================================================================

const fs = require(‘fs’)

const path = require(‘path’)

// 把 src/style.css 复制到 dist/ 目录下

const dist = path.join(__dirname, ‘dist’)

fs.readFile(‘./src/style.css’, (err, data) => {

if (err) {

throw err

} else {

console.log(data.toString())

// 确保 dist 目录存在

if (!fs.existsSync(dist)) {

fs.mkdirSync(dist)

}

// 对文件进行压缩: 将无用的注释或空格去掉

// /* 注释的内容 */

var mydata = data.toString().replace(/\s+/g, ‘’).replace(//*{1,2}[\s\S]**//g, ‘’)

// 将读到的内容,写入目标文件

fs.writeFile(dist+‘/style.min.css’, mydata, (err) => {

if (err) throw err

console.log(‘成功’)

})

}

})

文件流

=============================================================

缓冲 VS 流

  • 文件操作——缓冲方式

  • 源文件->内存缓冲->目标文件

  • 文件操作——流方式

  • A->B

为什么选择 “流”
  • 内存效率提高

  • 无需加载大量数据

  • 流把大数据切成小块,占用内存更少

  • 时间效率提高

  • 接获数据后立即开始处理

  • 无须等到内存缓冲填满

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
img

Vue 面试题

1.Vue 双向绑定原理
2.描述下 vue 从初始化页面–修改数据–刷新页面 UI 的过程?
3.你是如何理解 Vue 的响应式系统的?
4.虚拟 DOM 实现原理
5.既然 Vue 通过数据劫持可以精准探测数据变化,为什么还需要虚拟 DOM 进行 diff 检测差异?
6.Vue 中 key 值的作用?
7.Vue 的生命周期
8.Vue 组件间通信有哪些方式?
9.watch、methods 和 computed 的区别?
10.vue 中怎么重置 data?
11.组件中写 name 选项有什么作用?
12.vue-router 有哪些钩子函数?
13.route 和 router 的区别是什么?
14.说一下 Vue 和 React 的认识,做一个简单的对比
15.Vue 的 nextTick 的原理是什么?
16.Vuex 有哪几种属性?
17.vue 首屏加载优化
18.Vue 3.0 有没有过了解?
19.vue-cli 替我们做了哪些工作?

算法

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  1. 冒泡排序
  2. 选择排序
  3. 快速排序
  4. 二叉树查找: 最大值、最小值、固定值
  5. 二叉树遍历
  6. 二叉树的最大深度
  7. 给予链表中的任一节点,把它删除掉
  8. 链表倒叙
  9. 如何判断一个单链表有环
  10. 给定一个有序数组,找出两个数相加为一个目标数

由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+评论666

修改数据–刷新页面 UI 的过程?
3.你是如何理解 Vue 的响应式系统的?
4.虚拟 DOM 实现原理
5.既然 Vue 通过数据劫持可以精准探测数据变化,为什么还需要虚拟 DOM 进行 diff 检测差异?
6.Vue 中 key 值的作用?
7.Vue 的生命周期
8.Vue 组件间通信有哪些方式?
9.watch、methods 和 computed 的区别?
10.vue 中怎么重置 data?
11.组件中写 name 选项有什么作用?
12.vue-router 有哪些钩子函数?
13.route 和 router 的区别是什么?
14.说一下 Vue 和 React 的认识,做一个简单的对比
15.Vue 的 nextTick 的原理是什么?
16.Vuex 有哪几种属性?
17.vue 首屏加载优化
18.Vue 3.0 有没有过了解?
19.vue-cli 替我们做了哪些工作?

[外链图片转存中…(img-WmM8Gz5r-1710688078542)]

算法

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  1. 冒泡排序
  2. 选择排序
  3. 快速排序
  4. 二叉树查找: 最大值、最小值、固定值
  5. 二叉树遍历
  6. 二叉树的最大深度
  7. 给予链表中的任一节点,把它删除掉
  8. 链表倒叙
  9. 如何判断一个单链表有环
  10. 给定一个有序数组,找出两个数相加为一个目标数

    [外链图片转存中…(img-IawzY5tg-1710688078543)]

由于篇幅限制小编,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙点赞+评论666

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值