最后

在面试前我花了三个月时间刷了很多大厂面试题,最近做了一个整理并分类,主要内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。

包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。

  • HTML5新特性,语义化

  • 浏览器的标准模式和怪异模式

  • xhtml和html的区别

  • 使用data-的好处

  • meta标签

  • canvas

  • HTML废弃的标签

  • IE6 bug,和一些定位写法

  • css js放置位置和原因

  • 什么是渐进式渲染

  • html模板语言

  • meta viewport原理

})

//打开test.txt文件里面内容为hello Node.js

注:写入成功err为Null,写入失败为错误对象

  1. 示例:

text.txt中内容为小红=78 小蓝=45 小绿=76 小黑=99

const fs=require(‘fs’)

fs.readFile(‘test.txt’,‘utf-8’,function(err,datastr){

if(err){

return console.log(‘读取失败’+err)

}

// console.log(datastr);

const oldarr=datastr.split(’ ')

const newarr=[]

oldarr.forEach(item=>{

newarr.push(item.replace(‘=’,‘:’))

})

const newstr=newarr.join(‘\r\n’)

fs.writeFile(‘test.txt’,newstr,‘utf-8’,function(err,datastr){

if(err){

console.log(‘写入出错’,err.message);

}

console.log(‘写入成功’,datastr);

})

})

//结果为

//小红:78

//小蓝:45

//小绿:76

//小黑:99

path路径模块

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

  1. 先引入内部模块const path=require(‘path’)

  2. 将多个路径片段拼接成一个完整的路径path.join()

const pathStr=path.join(‘/a’,‘/b’,‘…/’,‘/c’)

//结果\a\c

注: …/会抵消到上一个相邻位置

const pathStr=path.join(__dirname,‘./test.txt’)

//当前目录下的test.txt文件

  1. 获取路径中的文件名path.basename()

const route=‘/a/b/c/test.js’

let textName=path.basename(route)

console.log(textName)

//结果test.js

let name=path.basename(route,‘.js’)

console.log(name)

//结果test

  1. 获取文件扩展名path.extname()

const route=‘/a/b/c/test.js’

let extName=path.extname(route)

console.log(extName)

//结果.js

  1. 示例:提取一个html文件,并将其改为外联式后重新存储

//引入模块fs

const fs=require(‘fs’)

//引入模块path

const path=require(‘path’)

//定义正则表达式

const styleReg=/

const scriptReg=/

//拿到HTNL文件内容

fs.readFile(path.join(__dirname,‘./test/test.html’),‘utf-8’,function(err,datastr){

if(err){

return console.log(‘读取出错’,err.message)

}

//解析CSS,JS,重写HTML

resolveCSS(datastr)

resolveJS(datastr)

resolveHTML(datastr)

})

function resolveCSS(htmlstr){

//匹配内容

let str1=styleReg.exec(htmlstr)

//删除样式标签

let newStr1=str1[0].replace(‘’,‘’)

//重写CSS文件

fs.writeFile(path.join(__dirname,‘./test/css.txt’),newStr1,‘utf-8’,function(err){

if(err){

console.log(‘写入css出错’,err.message);

}else{

console.log(‘写入CSS成功’);

}

})

}

function resolveJS(htmlstr){

let str2=scriptReg.exec(htmlstr)

let newStr2=str2[0].replace(‘’,‘’)

fs.writeFile(path.join(__dirname,‘./test/js.txt’),newStr2,‘utf-8’,function(err){

if(err){

console.log(‘写入JS出错’,err.message);

}else{

console.log(‘写入JS成功’);

}

})

}

function resolveHTML(htmlstr){

//更改内部式为外链式

let str3=htmlstr.replace(styleReg,‘’).replace(scriptReg,‘’)

//重写HTMl

fs.writeFile(path.join(__dirname,‘./test/index.html’),str3,‘utf-8’,function(err){

if(err){

console.log(‘写入HTML文件成功’,err.message);

}else{

console.log(‘写入HTML文件成功’);

}

})

}

http模块

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

网络基础知识


  1. ip地址:互联网中每台WEB服务器都有唯一ip地址

  2. 域名和域名服务器

ip地址太长并且无语义化,所以出现了域名,域名服务器就是将域名和ip两者进行转换

  1. 端口号

一台服务器有成百上千服务,每个端口号就对应一个服务

注:一个端口一个服务,80端口可以省略

创建WEB服务器


  1. 先调用内部模块require(‘http’)

  2. 创建服务http.createServer()

  3. 打开监听server.listen()

示例:

//调用内部模板

const http=require(‘http’)

//创建服务

const server=http.createServer()

//服务启动

server.on(‘request’,function(req,res){

console.log(‘someone visit our web server’)

})

//调用监听

server.listen(80,function(){

comsole.log(‘server running at http://127.0.0.1:80’)

})

//在浏览器输入 http://127.0.0.1:80会响应,但没内容

  1. req请求对象包含与客户端相关的数据和属性

const http=require(‘http’)

const server=http.createServer()

serner.on(‘request’,(req)=>{

let url=req.url

let method=req.method

let str=you request url is${url},request method is${method}

console.log(str)

})

数据结构与算法

这一块在笔试、面试的代码题中考核较多,其中常考的数据结构主要有:数组、链表、队列、栈、Set、Map、哈希表等,不同数据结构有不同的方法以及储存原理,这些算是技术岗的必备知识。算法部分主要分为两大块,排序算法与一些其他算法题

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

排序算法根据考频高低主要有:快速排序、归并排序、堆排序、冒泡排序、插入排序、选择排序、希尔排序、桶排序、基数排序、Timsort这十种,这类考核点要么是算法的时间、空间复杂度、稳定度,要么是直接手写代码,故在理解算法原理的同时,对JS语言版的排序算法代码也要加强记忆。

  • 二叉树层序遍历
  • B 树的特性,B 树和 B+树的区别
  • 尾递归
  • 如何写一个大数阶乘?递归的方法会出现什么问题?
  • 把多维数组变成一维数组的方法
  • 知道的排序算法 说一下冒泡快排的原理
  • Heap 排序方法的原理?复杂度?
  • 几种常见的排序算法,手写
  • 数组的去重,尽可能写出多个方法
  • 如果有一个大的数组,都是整型,怎么找出最大的前 10 个数
  • 知道数据结构里面的常见的数据结构
  • 找出数组中第 k 大的数组出现多少次,比如数组【1,2, 4,4,3,5】第二大的数字是 4,出现两次,所以返回 2
  • 合并两个有序数组
  • 给一个数,去一个已经排好序的数组中寻找这个数的位 置(通过快速查找,二分查找)

、稳定度,要么是直接手写代码,故在理解算法原理的同时,对JS语言版的排序算法代码也要加强记忆。

  • 二叉树层序遍历
  • B 树的特性,B 树和 B+树的区别
  • 尾递归
  • 如何写一个大数阶乘?递归的方法会出现什么问题?
  • 把多维数组变成一维数组的方法
  • 知道的排序算法 说一下冒泡快排的原理
  • Heap 排序方法的原理?复杂度?
  • 几种常见的排序算法,手写
  • 数组的去重,尽可能写出多个方法
  • 如果有一个大的数组,都是整型,怎么找出最大的前 10 个数
  • 知道数据结构里面的常见的数据结构
  • 找出数组中第 k 大的数组出现多少次,比如数组【1,2, 4,4,3,5】第二大的数字是 4,出现两次,所以返回 2
  • 合并两个有序数组
  • 给一个数,去一个已经排好序的数组中寻找这个数的位 置(通过快速查找,二分查找)

[外链图片转存中…(img-gGfFH0Eb-1715426878672)]

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐