【每日前端面经】2023-02-23

题目来源: 牛客

企业级开发整体流程有哪些

  1. 项目启动
  2. 需求调研->需求文档
  3. 系统设计->设计文档
  4. 程序开发->开发文档
  5. BUG测试->测试文档
  6. 验收
  7. 维护

遇到技术难题怎么办

  1. 分析可能出现的原因
  2. 查找搜索引擎
  3. 寻问文心一言等对话模型
  4. 打断点,寻找问题复现
  5. 再一次归纳分析
  6. 询问师傅或更高级的工程师

常用的设计模式

  • 工厂模式
    • 简单工厂模式
    • 抽象工厂模式
  • 单例模式
    • 懒汉单例
    • 饿汉单例
  • 装饰器模式
  • 策略模式
  • 代理模式
  • 观察者模式
  • 发布订阅模式

单例模式具体实现和原理

单例模式涉及单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建

// 懒汉单例
class LazySingleInstance {private constructor {}private static instance: LazySingleInstance;static getInstance() {if (!LazySingleInstance.instance) {return LazySingleInstance.instance;}LazySingleInstance.instance = new LazySingleInstance();return LazySingleInstance.instance;    }
}// 饿汉单例
class HungrySingleInstance {private constructor {}private static instance = new HungrySingleInstance();static getInstance() {return HungrySingleInstance.instance;}
}

发布订阅模式如何实现

class Event {constructor() { this.events = {} }// 订阅on(type, callback) {if (this.events[type] === undefined) this.events[type] = [];this.events[type].push({ listener: callback });}// 发布emit(type. args) {this.events[type].forEach(ele => {ele.listener(args)});}
}

发布订阅模式存在的风险

最大的缺点是松耦合,需要中间的代理,增加了系统的复杂度

TS泛型

泛型的特点就是带有“类型参数”

function getFirst<T>(arr: T[]): T {return arr[0];
}

什么情况用枚举类型

用于组合一系列常量从而实现共享复用

interface递归结构如何处理

interface可以在结构定义中引用interface定义的接口

典型ES6新特性

  • 展开运算符
  • 剩余参数
  • 字符串插值
  • 属性简写
  • 对象方法简写
  • 解构赋值
  • 数组新方法
  • Promise
  • 模块化

async await和promise什么情况下用哪种

async/await适用于异步请求相互独立的情况
Promise适用于同时进行多个异步请求的情况

promise.all其中一个接口挂了有什么后果

如果有一个接口挂了,那么会立刻将其reject掉,不再等待其他异步操作执行

async await接口挂了怎么处理

会直接抛出错误,可以用try/catch捕获

promise对象的本质

Promise是一个对象,代表了一个异步操作的最终完成或者失败,本质上Promise是一个函数返回的对象,可以在上面绑定回调函数,就不需要一开始把回调函数作为参数传入

promise对象里面做了什么事

promise封装AJAX怎么用

const ajax = (url) => {return new Promise((resolve, reject) => {const req = new XHLHttpRequest();req.open("GET", url, true);req.onload = () => req.status === 200 ? resolve(req.responseText) : reject(new Error(req.statusText));request.onerror = () => reject(new Error(req.statusText));request.send();});
}const url = "/ajax/get";
ajax(url).then(value => console.log(value)).catch(error => console.log(error));

构造函数、实例、原型三者关系

每一个构造函数有一个prototype指向其原型对象
每一个原型对象有一个constructor指向其构造函数
每一个实例对象有一个__proto__指向其原型对象

字符串的constructor是什么

字符串的构造函数是String。当String作为构造函数使用时,会创建一个String对象而非原始数据类型;而被作为函数调用时,会将参数强制转换成一个字符串原始类型

类的私有成员和共享成员

  • public: 默认值,没有访问限制
  • protected: 只允许在类的内部以及直接子类中访问
  • private: 只允许在类的内部访问
  • static: 静态变量,与实例无关

用面对对象思想抽象组件

bind、apply和call的区别

call和apply的区别在于apply的传参使用的是数组
call和bind的区别在于bind不会离开调用函数

数组操作方法里比较方便匹配是什么API

Array.find

遍历数组里面返回新的数据结构

  • for
  • while
  • for-in
  • for-of
  • forEach
  • map

什么情况下用不用=

绝大多数场合可以直接使用===,只有检测是否为null/undefined时可以使用==

数据类型判断

  • 基本数据类型:typeof
  • 通过对象类型判断: instance of
  • 根据原型链判断: prototype
  • 根据构造器判断: constructor

为什么Object.prototype.toString().call(obj)需要用call,apply可以么

set和map生成的数据怎么转数组

使用Array.from即可

webpack怎么处理各种loader和plugin以及webpack的生命周期

loader就是一个函数,接受原始资源作为参数,输出进行转换后的内容
plugin会在webpack生命周期中监听事件,并在合适的时机改变输出结果

  • beforeRun: 读取配置之前
  • run: 开始编译
  • watchRun
  • beforeCompile: 使用webpack-dev-server时会调用
  • compile: 开始编译时
  • thisCompilation: 创建新的Compilation对象时
  • compilation: 生成新的Compilation对象时
  • emit: 生成资源之前
  • afterEmit: 生成资源之后
  • done: 编译完成时
  • assetEmitted: 所有资源打包完毕后

介绍广度优先遍历和深度优先遍历的特性和区别

广度优先遍历

特点是回放。

  1. 从图中某顶点v出发,在访问了v之后依次访问v的各个未访问的邻接点
  2. 然后分别从这些邻接点出发依次访问它们的邻接点,并使得先被访问的顶点的邻接点先于后被访问的顶点的邻接点,直到图中所有已被访问顶点的邻接点都被访问到
  3. 如果此时图中尚有顶点渭北访问,则需要另选一个未曾被访问过的顶点作为新的起始点,重复上述过程,直到图中所有顶点都被访问到为止

深度优先遍历

特点在于回溯

  1. 假设初始状态是图中所有顶点均未被访问
  2. 从某个顶点触发,然后一次从它的各个未被访问的临界点出发深度优先搜索遍历图,直至图中所有和初始点有路径相通的顶点都被访问到
    3 若此时尚有未被访问到的顶点,那么则另选一个未被访问的初始点作为起点,重复上述过程

算法:深度优先遍历和广度优先遍历
企业的软件项目开发你一定要知道的那些流程!
程序员遇到技术问题该怎么解
如何理解这6种常见设计模式?
菜鸟教程
如何使用js来实现一个发布订阅模式
设计模式之发布订阅模式—— 一文搞懂发布订阅模式
阮一峰TypeScripe教程
TypeScript字符串枚举,以及何时和如何使用它们
9个常用ES6特性归纳(一般用这些就够了)
Promise和async/await的两种常用的实际应用场景
async,await做错误处理,每请求一个接口都要try,catch一下吗?
JavaScript——promise(一)基础篇
5分钟带你搞懂 构造函数、原型对象、实例对象、原型、原型链
MDN官方文档
ts class中的成员可见性(public,protected,private,static)
手写Webpack生命周期及其实现过程
彻底掌握 Webpack 中 Loader 和 Plugin 的机制
js判断数据类型常用的6种方法

新手发文,礼貌求关❤️

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/700310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.net6 webapi log4net完整配置使用流程

前置&#xff1a;为项目安装如下两个依赖 1.创建文件夹cfgFile 2.创建log4net.Config <?xml version"1.0" encoding"utf-8" ?> <log4net><appender name"ConsoleAppender" type"log4net.Appender.ConsoleAppender"…

月之暗面:Moonshot AI接口总结

前言&#xff1a; 开发者们只需访问 platform.moonshot.cn&#xff0c;便能创建自己的 API Key&#xff0c;进而将 Kimi 智能助手背后的同款 moonshot 模型能力&#xff0c;如长文本处理和出色的指令遵循等&#xff0c;集成至自己的产品中。这不仅增强了现有产品的功能&#x…

OkHttp 相关问题

1、OkHttp请求整体流程是怎么样? ​ Request-》OkHttpClient-》RealCall 同步 -》 在调用线程 执行五大拦截器 异步 -》 使用分发器将任务在线程池执行 五大拦截器 ---首先AsyncCall --加到等待队列readyAsyncCalls--》判断host有没有 已经存在。有,就赋值原来的。(reuseC…

docker安装及使用说明

docker安装及使用说明 Docker安装Windows版本Linux版本 Docker 使用 如果已经正确安装了docker&#xff0c;在日常使用中&#xff0c;关于常用命令和一些使用技巧可参考文章 [docker常用命令] Docker安装 Windows版本 微软要求 Windows 10 版本 2004 及更高版本&#xff08;内…

大离谱!AI写作竟让孔子遗体现身巴厘岛,看完笑不活了

大家好&#xff0c;我是二狗。 这两天我在知乎上看到了一个AI写作大翻车的案例&#xff0c;看完简直笑不活了&#xff0c;特地分享给大家一起 happy happy&#xff5e; 知乎网友“打开盒子吓一跳”一上来就抛出来了一个“孔子去世”的王炸。 首先&#xff0c;下面是一条真实新…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的犬种识别系统(附完整代码资源+UI界面+PyTorch代码)

摘要&#xff1a;本文介绍了一种基于深度学习的犬种识别系统系统的代码&#xff0c;采用最先进的YOLOv8算法并对比YOLOv7、YOLOv6、YOLOv5等算法的结果&#xff0c;能够准确识别图像、视频、实时视频流以及批量文件中的犬种。文章详细解释了YOLOv8算法的原理&#xff0c;并提供…

【Java程序设计】【C00286】基于Springboot的生鲜交易系统(有论文)

基于Springboot的生鲜交易系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的生鲜交易系统 本系统分为系统功能模块、管理员功能模块、用户功能模块以及商家功能模块。 系统功能模块&#xff1a;在系统首页可以…

Llama中文大模型-模型预训练

Atom系列模型包含Atom-7B和Atom-13B&#xff0c;基于Llama2做了中文能力的持续优化。Atom-7B和Atom-7B-Chat目前已完全开源&#xff0c;支持商用&#xff0c;可在Hugging Face仓库获取模型:https://huggingface.co/FlagAlpha 大规模的中文数据预训练 原子大模型Atom在Llama2的…

【第七天】C++模板探秘:函数模板、类模板以及类型转换的深入解析

一、模板的概述 c面向对象编程思想&#xff1a;封装、继承、多态 c泛型编程思想&#xff1a;模板 模板的分类&#xff1a;函数模板、类模板 函数模板&#xff08;类模板&#xff09;&#xff1a;将功能相同&#xff0c;类型不同的函数&#xff08;类&#xff09;的类型抽象成虚…

MMDetection3调试技巧查看Backbone Neck Head 输出---MMDetectionv2迁移

参考&#xff1a;MMDetection issue #9479 查看 Backbone &#xff1a; # 骨架网络构建 # from mmengine.registry import Registry import torch import numpy as np from mmdet.registry import MODELSif __name__ __main__:backbonedict(typeResNet,depth50,num_stages4,…

BeautifulSoup中的find_all()及select()查找方法

#Beautiful Soup库中的find_all()方法是用于查找HTML文档中符合指定条件的所有元素。它返回一个列表&#xff0c;其中包含了找到的所有元素。 # 对于Beautiful Soup库中的find_all()方法&#xff0c;其参数类型可以分为以下几种&#xff1a; # 标签名&#xff1a;字符串类型&a…

聊聊Sora这个AI大神和中美技术赛跑那些事儿

最近有个叫Sora的AI模型火得一塌糊涂。它就像个魔法师&#xff0c;你给它一段话描述&#xff0c;它就能变出一段60秒的高清视频来&#xff0c;这可比之前咱们看过的那些文字转图片的AI厉害多了。想象一下&#xff0c;以后拍电影预告片、做广告宣传啥的&#xff0c;可能直接让So…

Java命令模式:让请求成为对象

Java命令模式&#xff1a;让请求成为对象 在软件设计中&#xff0c;我们经常遇到需要将操作或请求封装成对象的情况。这样&#xff0c;我们可以将它们作为参数传递、排队、记录或撤销。命令模式正是为了满足这种需求而诞生的。在命令模式中&#xff0c;一个请求或操作被封装成…

Ansible 更换aliyun 镜像 并下载tree

目录 查看系统版本找到对应 的版本对当前镜像进行备份下载aliyuan更换成功安装扩展源更换源之后 的三个命令 这里安装一个aliyun 的镜像 本案例 仅供实验参考 生产环境中请谨慎使用 查看系统版本 先查看linux 的系统 版本 ansible slave -m shell -a uname -a找到对应 的版本…

【Spring面试题】

目录 前言 1.Spring框架中的单例bean是线程安全的吗? 2.什么是AOP? 3.你们项目中有没有使用到AOP&#xff1f; 4.Spring中的事务是如何实现的&#xff1f; 5.Spring中事务失效的场景有哪些&#xff1f; 6.Spring的bean的生命周期。 7.Spring中的循环引用 8.构造方法…

FFmpeg解析之avformat_find_stream_info函数

avformat_find_stream_info 的主要作用就是&#xff1a;解析媒体文件并获取相关的流信息 整体的逻辑如下图所示&#xff1a; /*** Read packets of a media file to get stream information. This* is useful for file formats with no headers such as MPEG. This* function…

聊聊JVM运行时数据区的堆内存

聊聊JVM运行时数据区的堆内存 内存模型变迁&#xff1a; Java堆在JVM启动时创建内存区域去实现对象、数组与运行时常量的内存分配&#xff0c;它是虚拟机管理最大的&#xff0c;也是垃圾回收的主要内存区域 。 内存模型变迁&#xff1a; 为什么要有年轻区和老年区&#xff1f;…

【算法与数据结构】链表、哈希表、栈和队列、二叉树(笔记二)

文章目录 四、链表理论五、哈希表理论五、栈和队列理论5.1 单调栈 六、二叉树理论6.1 树的定义6.2 二叉树的存储方式6.3 二叉树的遍历方式6.4 高度和深度 最近博主学习了算法与数据结构的一些视频&#xff0c;在这个文章做一些笔记和心得&#xff0c;本篇文章就写了一些基础算法…

C#面:as 和 is 的区别

as 关键字&#xff1a; as 关键字用于将一个对象转换为指定类型&#xff0c;如果转换成功&#xff0c;则返回该类型的实例&#xff1b;如果转换失败&#xff0c;则返回 null 。as 关键字只能用于引用类型之间的转换&#xff0c;不能用于值类型之间的转换。如果被转换的对象为 …

基于AI将普通RGB图像转换为苹果Vision Pro支持的空间照片

将 RGB 图像转换为空间图片 一、引言 随着AR和VR技术的普及,空间照片格式(.HEIC)逐渐受到关注。这种格式允许用户在AR/VR设备上体验到更为真实的立体空间效果。为了让更多的普通图片也能享受这种技术,我们开发了这款可以将普通RGB图像转换为苹果Vision Pro支持的.HEIC格式的…