当前位置: 首页 > news >正文

2024前端面试题分享

前言

最近忙着面试很久没有更新文章了,分享一下我收集的前端面经,当然题目仅供参考(乞求秋招offer)

面试题

响应式布局     ---根据用户的的窗口变化而变化的布局方式
react 的hooks    ---官方提供的钩子和自定义的钩子,用来处理状态变化,视图更新,和逻辑复用
useMome 和useCallBack    ---没有了解
性能优化(懒加载,缓存,压缩)    ---减少网络请求,使用浏览器缓存,减小打包的体积,使用动态路由
webpack打包控制        ---设置打包的文件名,和被打包的文件类型,排除不需要打包的文件、文件夹,转换js的规范
无感刷新 token 的意义    ---使用双token,当主token失效后,刷新token代替请求,用户就不需要重新验证身份,
url输入到浏览器发生了什么    ---会检查本地的dns表查找ip,没有找到则向dns服务器发送请求获取ip,访问到ip后拿到页面数据,开始按html,link,script的顺序渲染页面;这里包含了异步处理,则会被塞到异步队列中等待同步任务处理完后执行异步操作

web Woker(接受一个脚本文件,后台使用线程处理,不影响主线程,通过消息事件<message>传递信息)
Webpack为什么打包、进行压缩之后,性能就会提高呢      ---降低了代码的体积,去除了模块化,页面请求的数据变少了,获取脚本的速度变快了
为什么使用webpack        ---webpack可以优化web的体积和性能,打包时可以设置文件指纹,保证页面的实时更新,打包后的代码被混淆处理,不便阅读反解,保护代码的版权
对原始值的拆包和解包    ---没有了解
For of和For in的区别    ---for of是迭代对象遍历值的语法糖,基于symbol.iterator属性实现的,for in 是遍历引用类型的属性,从而遍历整个对象的
判断数据类型的方法        ---基本数据类型使用 type of ,引用数据类型使用 instanceof ,要注意的点typeof null 是Object,instanceof是判断原型链上的对象是否存在,数组可以使用Array.isArray来判断,它的原理是将值使用tostring方法和 [array object]对比
深拷贝、浅拷贝 子问题:JSON.parse( JSON.stringify(arr))在深拷贝时有哪些需要注意    ---当对象有undefined和null属性值或者数组内有空数组时,json序列化会排除掉这些空值
数组的常用静态方法和实例方法?     ---Array.isArray,Array.from,push,pop,map,filter,splice
 子问题:①哪些方法会修改原数组、哪些不会?     ---push,pop,splice会改变,map不会改变原数组,但是内部的回调会改变
②数组Pop方法的返回值    ---数组被删除的第一个元素
③使用哪些数组方法可以实现浅拷贝    ---map
④slice()第二个参数为-1是什么意思    ---裁剪到数组的倒数1位,
⑤splice()有什么用        ---可以实现数组的插入,删除
对Promise的理解?Promise规范有了解吗?Promise的缺点      ---promise时异步处理的解决方法,它可以将异步的方法保存起来,使用回调的方式处理异步结果; ;promise对于多次异步的处理会产生大量回调,代码不易维护
子问题:①有哪些静态方法和原型方法②catch方法之后还可以进行链式调用吗     ---实例方法then,catch ,静态方法,all;可以catch方法相当于只处理reject状态的回调,任然会返回一个promise
请求头content-type的类型有哪些    ---html 、image、json
子组件和父组件加载顺序    ---同步先于异步,父组件先于子组件,
事件修饰符.sync    ---没有了解,字面意思应该是一个异步事件,推后执行
Vue2中Computed计算属性的特性以及实现原理        ---可以设置值,拦截访问,getter和setter处理
console.log(null == undefined) // true
console.log(true == 2) // false
console.log(null == 0) // false
console.log(1 == '1') // true

function test(age) {
    console.log(age);
    var age = 20;
    console.log(age);
    function age() {

    }
    console.log(age);
}
// 参数function , 20 ,20 ;函数优先会被提到最前面,var将age重新赋值,和传入的age无关
 flex 1和 flex auto的区别 ?    ---flex 1是 1 1 0,flex auto是 1 1 auto auto的伸缩会将剩下的空间全部取走
http2 和 http1.1的区别?    ---不清楚,没有深入了解
说一下浏览器缓存        ---浏览器会保存首次的网络请求资源,对于后续的同名文件和请求,会将保存的资源返回,比如,随机的api请求,多次请求返回的是同一组数据
说一下跨域怎么处理的 ?jsonp说一下原理     ---使用本地服务器代理请求,在返回给页面,
继承方法有哪些    ---class,prototype,类和原型
解决跨域的方式有哪些    ---cors,jsonp
react router有哪些常用的路由模式?    ---BrowserRouter 和 HashHistory, ‘/’和‘#’
讲一下扩展运算符的使用,好处是什么,set解构和map解构         ---简化属性的提取,set和map使用数组的结构方式结构
set是否支持forEach循环    --- 支持set的原型上有foreach方法
说一下对ajax的了解,基于什么去实现的,有什么样的一个功能    ---基于xmlhttprequest,可以获取后端传递的json数据,异步不阻塞主进程,并且不会触发页面的整体变化
ajax跟fetch应用上有什么区别,什么时候用ajax,什么时候会用fetch    ---ajax基于xmlhttprequest只能在浏览器中使用,fetch是支持浏览器和node
说一下了解的webpack,输入输出和构建流程    ---在webpack.config.js文件中设置打包规则,包括,指定文件夹,文件类型,打包的es6语法转换,
webpack构建好的产物都是什么?你是如何部署的?前端平台的部署是一个什么流程?     ---一个主要的html,和其他的js脚本css样式文件,以及静态资源,将打包好的dist文件夹中的文件部署到github的分支,在将这个分支用github的静态page功能部署,暂时没有用过平台部署
github给你分配了一个链接,这个链接是如何代理到你打包好的前端资源上的?     ---这个链接会和存放资源的服务器ip构成一个dns表,而打包 好的资源就存放在服务器上
webpack热更新实现原理
react组件通讯的方式有哪些    ---props透传,useContext深层传递的钩子
说一下react的diff算法
输入 url 到请求返回发生了什么
了解浏览器缓存吗?浏览器缓存有哪些?
强缓存和协商缓存
EventLoop是什么?浏览器事件循环和Nodejs事件循环有什么区别?
怎么做前端工程化规范? (prettier、eslint、commitlint、webpack/vite、CI/CD)
Promise 有哪些静态方法?(all、race、allSettled)说一说 Promise.allSettled 方法?
async / await 原理?(generator语法糖)
TypeSctipt 如何将一个联合类型缩小为具体类型?
你的项目的js或css文件大概多大?多大比较合适?为什么? 
异步事件都有哪些区别?(宏任务、微任务)
前端常用优化性能方式?
说一说块盒子和内联盒子的特点? a. 两者设置内边距和外边距有什么区别?   内联元素设置边距:左右正常,上下无作用
讲一讲 BFC 和触发的条件?
说一下 JS 变量类型,怎么判断它们 和 它们的优缺点
cookie,session和token的区别
讲一下变量提升
说一下vue组件间的通信
之前做的项目有开发环境和生产环境的区分吗?怎么区分
vue双向绑定中,界面驱动数据的监听方式是什么
ts最大的特点是强类型,你觉得怎么用好他?有必要吗?强调了是两个问题
react会有一个入口文件来运行,运行时发生了什么?
css实现三栏布局
http1和http2的区别
https的加密过程

1. 变量作用域和this指向问题,说输出
var bar = 'window'
function say() {
    var bar  = '111'
    console.log(bar)
    console.log(this.bar)
}
const obj = {
    bar: '222',
    say() {
        console.log(bar)
        console.log(this.bar)
    }
}
say()
obj.say()
obj.say = say
obj.say()

.async函数输出顺序问题
async function f1() {
    console.log(1)
}
async function f2() {
    console.log(2)
    await console.log(3)
    // 取消注释后输出顺序又是怎样
    // console.log(5)
}
function f3() {
    console.log(4)
}
f1()
f2()
f3()


手写题:

手写深拷贝 ( 支持 原型继承 和 循环调用 )

实现一个函数,可以将数组转化为树状数据结构​
1. 数组只有一个没有 parentId 的元素,为根节点​
2. 输出一个根节点,打印出树状结构​
// 入参格式参考:​
const arr = [​
  { id: 1, name: 'i1' },​
  { id: 2, name: 'i2', parentId: 1 },​
  { id: 4, name: 'i4', parentId: 3 },​
  { id: 3, name: 'i3', parentId: 2 },​
  { id: 7, name: 'i7', parentId: 3 },​
  { id: 8, name: 'i8', parentId: 3 }​
]


数组实现reduce、map

算法:最大子数组和

算法:最长不重复字符串

① 数组扁平化(函数传入两个参数,第一个为数组,第二个为扁平化层级) ② 实现斐波那契数列
扁平数组 转 树结构

找出出现最多次的字符

写一个函数,实现输入的ajax请求串行输出(可用递归、迭代、await都可以)。
 二叉树、完全二叉树、满二叉树区别
 二叉树遍历时间复杂度,最好最坏
 二叉树遍历方式,以哪个节点为主 ?

手写监听数组      ---重写原型方法(push,pop,shift,unshift),使用proxy监听对象的方式
链表反转

一只青蛙可以一次跳上2个台阶,也可以调试1个台阶,求跳上n级台阶共多少种跳法

算法:括号匹配

写一个重复执行函数

写一个函数遍历统计页面上所有的dom元素,并且以对象的形式返回

以下是本人实际面试的题目

一、
介绍项目中的难点

http请求中有什么内容,(http响应头,http状态码,http的传输方式,网络模型,https,tcp/ip)

tcp协议有什么特点

计算机网络的分层

http2.0新增了什么(和http1有什么区别)

react和vue有什么区别

手写题:
判断变量输出

var a = 0;
var b = 0;
var c = 0;
function fn(a){
  console.log('fn',a++,c);
  function fn2(b){
    console.log('fn2',a,b,c);
  }
  var c = 4;
  fn = fn2;
}
fn(1)
fn(2)

事件循环输出
console.log('start');
async function async1(){
  console.log('async1 start')
  await async2();
  console.log('async1 end')
}
async function async2(){
  console.log('async2')
}
setTimeout(()=>{
  console.log('setTimeout')
},0)
async1()
new Promise((res)=>{
  console.log('Promise1')
  res()
}).then(()=>{
  console.log('Promise2')
})

console.log('end');

反转链表 ,链表有什么特点

反问:
哪里需要加强提升?(知识点应该学习的深入一些,算法需要多练)


二、

写一个vue项目,你会怎么实现

vue3的生命周期
solt插槽是怎么使用的

sesstion和cookie
跨域问题怎么解决
是否了解web安全
for in和for of

{

  a:1 ,
  b: [1,2,3,4,5],
  c: ()=>{},
  d: {
     e: null,
     f: {
         
     }
  }
}

三、

介绍项目,歌词和进度条是怎么保持一致的?项目中歌曲可以播放的格式有哪些?

vue2转vue3怎么实现?

js的事件循环是什么?

反问,公司的技术方向是什么?前端开发人数有多少?


自我介绍

问项目问题,echart图表是怎么用的?

h5和css3有没有了解?有什么新特性?

有没有用过ai编程?(colipot)

学习的过程有没有遇到困难不理解的地方?是怎么解决的

遇到不会的问题会怎么查?

认为自己有什么优缺点?

闲聊了几句,家在哪里,目前居住在哪里?

四、

自我介绍

为什么选择学习前端,说一下前端的学习路线

介绍项目的难点以及是怎么解决的

如果项目启动的时候有白屏,怎么解决?

vue2和vue3的区别?proxy实现响应式为什么更好?

webpack怎么优化性能?

反问:公司的前端的技术方向是什么?vue

五、

自我介绍

项目中有懒加载的效果是怎么实现的?

知道块级标签和行内标签是怎么排布的吗?分别有哪些标签呢?

input标签有哪些type类型?

了解语义化标签吗?有哪些标签是语义化标签呢?

浏览器的标准模式和怪异模式,怪异模式下会怎么渲染dom?

css有哪些选择器?伪类选择器有哪些?

css怎么实现一个水平垂直居中的布局?

有哪些position定位属性?分别是什么效果?

js的事件传递机制是怎么样的?(ul里有一个li,触发点击时怎么响应事件,如果要让ul先触发怎么实现?)

反问:公司的前端的技术方向是什么?vue,react,原生

 

相关文章:

2024前端面试题分享

前言 最近忙着面试很久没有更新文章了&#xff0c;分享一下我收集的前端面经&#xff0c;当然题目仅供参考&#xff08;乞求秋招offer&#xff09; 面试题 响应式布局 ---根据用户的的窗口变化而变化的布局方式 react 的hooks ---官方提供的钩子和自定义的钩子&#xf…...

数学基础 -- 线性代数之正交矩阵

正交矩阵 正交矩阵是线性代数中的一个重要概念&#xff0c;具有许多优良的性质&#xff0c;在数值计算、线性变换、信号处理等领域有着广泛的应用。 1. 正交矩阵的定义 一个 n n n \times n nn 的方阵 Q Q Q 如果满足以下条件&#xff1a; Q T Q Q Q T I Q^T Q Q Q^T …...

PostgreSQL 17即将发布,新功能Top 3

按照计划&#xff0c;PostgreSQL 17 即将在 2024 年 9 月 26 日发布&#xff0c;目前已经发布了第一个 RC 版本&#xff0c;新版本的功能增强可以参考 Release Notes。 本文给大家分享其中 3 个重大的新增功能。 MERGE 语句增强 MERGE 语句是 PostgreSQL 15 增加的一个新功能…...

心觉:别再做单线程的打工人!换个思路突破

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松搞定人生挑战&#xff0c;实现心中梦想&#xff01; 挑战日更写作161/1000(完整记录在下面) 公门洞开纳百川 众心逐梦越千山 号召引领潜力绽 心觉潜意识无间 想让财富翻个2倍…...

深度学习-用神经网络NN实现足球大小球数据分析软件

文章目录 前言一、 数据收集1.1特征数据收集代码实例 二、数据预处理清洗数据特征工程&#xff1a; 三、特征提取四、模型构建五、模型训练与评估总结 前言 预测足球比赛走地大小球&#xff08;即比赛过程中进球总数是否超过某个预设值&#xff09;的深度学习模型是一个复杂但有…...

linux 9系统分区扩容

1.可以看到我的是9.2的系统&#xff0c;系统分区&#xff1a;/dev/mapper/rl-root 83G 8.0G 75G 10% / 2.接下来&#xff0c;我们新增一块新的硬盘&#xff0c;而不是直接对这个硬盘的基础上再扩容。 关机&#xff0c;加30G硬盘&#xff0c;再开机 fdisk -l fdisk /dev/…...

Solidity初体验

一、概念知识 什么是智能合约&#xff1f; 智能合约是仅在满足特定条件时才在区块链上部署和执行的功能&#xff0c;无需任何第三方参与。 由于智能合约本质上是不可变的和分布式的&#xff0c;因此它们在编写和部署后无法修改或更新。此外&#xff0c;分布式的意义在于任何…...

大模型笔记01--基于ollama和open-webui快速部署chatgpt

大模型笔记01--基于ollama和open-webui快速部署chatgpt 介绍部署&测试安装ollama运行open-webui测试 注意事项说明 介绍 近年来AI大模型得到快速发展&#xff0c;各种大模型如雨后春笋一样涌出&#xff0c;逐步融入各行各业。与之相关的各类开源大模型系统工具也得到了快速…...

html前段小知识点

1. 什么是HTML? 超文本标记语言是一种 用于创建网页的标准标记语言 HTML 文档包含了HTML 标签及文本内容 也叫文档1.什么是css&#xff1f; CSS (层叠样式表&#xff09;&#xff0c;是一种用来为结构化文档添加样式的计算机语言&#xff0c;CSS 文件扩展名为 .css。 可以设…...

AD7606工作原理以及FPGA控制验证(串行和并行模式)

文章目录 一、AD7606介绍二、AD7606采集原理2.1 AD7606功能框图2.2 AD7606管脚说明 三、AD7606并行模式时序分析以及实现3.1 并行模式时序图3.2 并行模式时序要求3.3 代码编写3.4 仿真观察 四、AD7606串行模式时序分析以及实现4.1 串行模式时序图4.2 串行模式时序要求4.3 代码编…...

如何查看Pod的Container资源占用情况

云原生学习路线导航页&#xff08;持续更新中&#xff09; 方法一&#xff1a;直接查看pod的资源占用 kubectl top pods ${pod-name} -n ${ns} 方法二&#xff1a;通过运行的进程&#xff0c;查看pod的某个容器资源占用 1.找到pod所在node容器号&#xff1a;kubectl descri…...

WordPress上可以内容替换的插件

插件下载地址&#xff1a;WordPress内容替换插件 – 果果开发 类型 替换的类型&#xff1a;文章、自定义文章类型、分类、标签、媒体库、页面、评论、数据库表&#xff0c;不同的类型可以替换不同的字段。 替换字段 替换的字段&#xff0c;哪些字段内容需要替换。除了数据库…...

C++ | Leetcode C++题解之第355题设计推特

题目&#xff1a; 题解&#xff1a; class Twitter {struct Node {// 哈希表存储关注人的 Idunordered_set<int> followee;// 用链表存储 tweetIdlist<int> tweet;};// getNewsFeed 检索的推文的上限以及 tweetId 的时间戳int recentMax, time;// tweetId 对应发送…...

构建并训练卷积神经网络(CNN)对CIFAR-10数据集进行分类

深度学习实践&#xff1a;构建并训练卷积神经网络&#xff08;CNN&#xff09;对CIFAR-10数据集进行分类 引言 在计算机视觉领域中&#xff0c;CIFAR-10数据集是一个经典的基准数据集&#xff0c;广泛用于图像分类任务。本文将介绍如何使用PyTorch框架构建一个简单的卷积神经…...

flowable 根据xml 字符串生成流程图

//获取xml InputStream stream repositoryService.getProcessModel(processDefinitionId); String result IOUtils.toString(stream, StandardCharsets.UTF_8); // 创建 XMLInputFactory XMLInputFactory factory XMLInputFactory.newInstance(); // 从字符…...

AI建模——AI生成3D内容算法产品介绍与模型免费下载

说明&#xff1a; 记录AI文生3D模型、图生3D模型的相关产品&#xff1b;记录其性能、功能、收费与免费方法 0.AI建模产品 Rodin MeshAnything Meshy 生成效果比较&#xff1a; Rodin效果最好、Meshy其次 1.Rodin 官网&#xff1a;gHyperHuman 支持&#xff1a;文生模型、…...

在Go中迅速使用RabbitMQ

文章目录 1 认识1.1 MQ分类1.2 安装1.3 基本流程 2 [Work模型](https://www.rabbitmq.com/tutorials/tutorial-two-go#preparation)3 交换机3.1 fanout3.2 direct3.3 [topic](https://www.rabbitmq.com/tutorials/tutorial-five-go) 4 Golang创建交换机/队列/Publish/Consume/B…...

Windows JDK安装详细教程

一、关于JDK 1.1 简介 Java是一种广泛使用的计算机编程语言&#xff0c;拥有跨平台、面向对象、泛型编程的特性&#xff0c;广泛应用于企业级Web应用开发和移动应用开发。 JDK&#xff08;Java Development Kit&#xff09;是用于开发 Java 应用程序的工具包。它由以下几个主要…...

Ribbon负载均衡底层原理

springcloude服务实例与服务实例之间发送请求&#xff0c;首先根据服务名注册到nacos&#xff0c;然后发送请求&#xff0c;nacos可以根据服务名找到对应的服务实例。 SpringCloudRibbon的底层采用了一个拦截器&#xff0c;拦截了openfeign发出的请求&#xff0c;对地址做了修…...

【C语言可变参数函数的使用与原理分析】

文章目录 1 前言2 实例2.1实例程序2.2程序执行结果2.3 程序分析 3 补充4 总结 1 前言 在编程过程中&#xff0c;有时会遇到需要定义参数数量不固定的函数的情况。 C语言提供了一种灵活的解决方案&#xff1a;变参函数。这种函数能够根据实际调用时的需求&#xff0c;接受任意…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...