软件公司都是帮别人做网站么做外贸商城网站

bicheng/2026/1/26 0:05:35/文章来源:
软件公司都是帮别人做网站么,做外贸商城网站,用vs2005做网站设计,重庆川九建设有限责任公司官方网站目录 前言一面git 常见命令跨窗口通信vue 响应式原理发布订阅模式翻转二叉树Promise.all()扁平化数组面试官建议 二面Event Loop 原理Promise 相关css 描边方式requestAnimationReact 18 新特性JSX 相关react 输出两次函数式编程React 批处理机制http请求头有哪些本地存储性能优… 目录 前言一面git 常见命令跨窗口通信vue 响应式原理发布订阅模式翻转二叉树Promise.all()扁平化数组面试官建议 二面Event Loop 原理Promise 相关css 描边方式requestAnimationReact 18 新特性JSX 相关react 输出两次函数式编程React 批处理机制http请求头有哪些本地存储性能优化方面webgl 的优化手段着色器优化相关缓冲区和深度测试异步原型和原型链倒序输出汉语表达次数最少字符 面试复盘 前言 即时设计 - 可实时协作的专业 UI 设计工具 即时设计是一款可在线编辑的专业UI设计工具支持原型、交互、智能动画、切图等功能满足产品创造和交付的全流程体验。 面试题目源码前端面经 一面 git 常见命令 初始化仓库git init 远程仓库地址git clone / git remote add origin 查看关联的远程仓库列表 git remote -v 显示当前工作目录和暂存区的状态 git status 添加到暂存区 git add . 提交本地仓库 git commit -m 提交日志 提交日志信息 git log 推送远程仓库 git push origin 本地分支名 创建分支 git branch 分支名称 切换分支 git checkout 分支名称 合并分支 git merge 分支名称跨窗口通信 https://juejin.cn/post/7306040473542213644 可以借助 web scoket 通过后端这个载体进行跨页面通信Broadcast Channel遵循浏览器的同源策略基于发布-订阅模式允许一个窗口发送消息并由其他窗口接收本质上是一个数据共享池子SharedWorker是 HTML5 中提供的一种多线程解决方案它可以在多个浏览器 TAB 页面之间共享一个后台线程从而实现跨页面通信本地化存储 API利用本地存储实现同域下的数据共享window 监听 storage 数据变化执行对应的方法回调 vue 响应式原理 vue2 使用 Object.defineProperty实现是 es6 引入的方法可以通过配置精确添加或修改对象的属性 不能利用 get/set 对额外添加的属性进行监听 不能监听自身数组下标修改元素的变化直接定义数组可以但是不常用 vue3 使用 Proxy 实现能够支持对象添加或修改属性的变化 通过reactive() 函数给每一个对象都包一层 proxy从而实现对数据的监控 支持改变数组的方法push、pop、shift、unshift、splice、sort、reverse Reflect 是 es6 引入的新特性提供一种新的方式操作对象 使用 WeakMap 作为缓存区防止对象被重复代理主要是避免内存泄漏以及隐藏内部实现细节 发布订阅模式 class PubSub {constructor() {this.events {}}subscribe(event, callback) {if (!this.events[event]) this.events[event] []this.events[event].push(callback)}unSunscribe(event, callback) {if (!this.events[event]) returnthis.events[event] this.events[event].filter((cb) cb ! callback)}publish(event, data) {if (!this.events[event]) returnfor (let item of this.events[event]) item(data)} }const pubsub new PubSub() function callback1(data) {console.log(触发订阅事件 1, data) }function callback2(data) {console.log(触发订阅事件 2, data) }pubsub.subscribe(myEvent, callback1) pubsub.subscribe(myEvent, callback2)pubsub.publish(myEvent, 11111)翻转二叉树 /*** 实现翻转二叉树* 例如* a* / \* b c* 转为* a* / |* c b*/ const invertTree function (root) {if (root null) return rootlet temp root.leftroot.left invertTree(root.right)root.right invertTree(temp)return root }const ensure (output, expect, message) {if (JSON.stringify(output) JSON.stringify(expect)) {console.log(${message} ok)} else {console.log(${message} fail)} }const test function () {const input {val: 1,left: {val: 2,left: {val: 3,left: null,right: null,},right: {val: 4,left: null,right: null,},},right: {val: 5,left: {val: 6,left: null,right: null,},right: {val: 7,left: null,right: null,},},}const expect {val: 1,left: {val: 5,left: {val: 7,left: null,right: null,},right: {val: 6,left: null,right: null,},},right: {val: 2,left: {val: 4,left: null,right: null,},right: {val: 3,left: null,right: null,},},}const output invertTree(input)ensure(output, expect, test) }// 输出 test ok表示测试成功 test()Promise.all() Promise.myAll function (promises) {let result []return new Promise((resolve, reject) {promises.forEach((item, index) {Promise.resolve(item).then((res) {result[index] resif (Object.keys(result).length promises.length) resolve(result)}).catch((err) {reject(err)})})}) }const p1 Promise.resolve(p1) const p2 new Promise((resolve, reject) {setTimeout(() {resolve(p2 延时一秒)}, 3000) }) const p3 new Promise((resolve, reject) {setTimeout(() {resolve(p3 延时两秒)}, 2000) })const p4 Promise.reject(4)Promise.myAll([p4, p2, p3]).then((res) console.log(res)).catch((err) console.log(err)) // 2秒后打印 [const promise new Promise((resolve, reject) {}) console.log(promise) 扁平化数组 // https://juejin.cn/post/7273693216372916283console.log(\n --- 一原生方法 --- \n) let arr [1, [2, 3], [4, [5, 6, [7, 8]]]] console.log(arr.flat()) // 默认解析一层可以指定参数 console.log(arr.flat(Infinity)) // Infinity完全解析console.log(\n--- 二、递归解析 ---\n)function flatten(arr, depth) {let result []for (let i 0; i arr.length; i) {if (Array.isArray(arr[i]) depth 0) {result result.concat(flatten(arr[i], depth - 1))} else {result.push(arr[i])}}return result }console.log(flatten(arr, 1)) console.log(flatten(arr, 2)) console.log(flatten(arr, 3))console.log(\n--- 三、reduce解析 ---\n) function reduceFlatten(arr) {return arr.reduce((acc, cur) {if (Array.isArray(cur)) {return acc.concat(reduceFlatten(cur))} else {return acc.concat(cur)}}, []) }console.log(reduceFlatten(arr)) 面试官建议 面试回答先总结然后分点并结合自己的实际项目进行讲解应届生没有太多的项目/业务经验面试官可能会重点问一下基础、框架原理、数据结构与算法、计算机网络这些知识点 一面忘记录音了有一些问题面试后没有回想起来 二面 Event Loop 原理 事件循环Event Loop是 JavaScript 中实现异步编程的一种机制。 执行同步任务放入调用栈结果输出到控制台异步任务放到web apis这里分为微任务、宏任务同步代码执行完毕即调用栈清空启动事件循环机制Event Loop依次处理执行微任务、宏任务队列放入调用栈执行 Promise 相关 同步任务按照次序依次执行每个任务必须完成后才能执行下一个任务。 异步异步任务是非阻塞的可以同时执行多个任务不需要等待任务的完成。 执行 async 函数返回的一定是 Promise 对象await 相当于 Promise 的 thentry…catch 可捕获异常代替了 Promise 的 catchpromise.all 接收 promises 数组所有为 resolve 才输出有一个 reject 就中断输出报promise.allSettled 接收 promises 数组不论结果是什么都会输出每一个 promise 的状态 css 描边方式 border 普通边框outline 不占用空间和影响元素大小box-shadow 设置阴影描边效果 requestAnimation setTimeout快速滚动白屏原因不同设备刷新率不同setTimout 只是一个固定的时间间隔。只有主线程执行完毕才会检查事件队列的任务执行时间会变晚requestAnimationFrame由系统决定回调函数的执行时机不会引起丢帧现象1/60 1/75 React 18 新特性 https://juejin.cn/post/7071861718573383716 并发渲染机制优先处理用户最关心的事情批处理优化多个状态合并成一个批次处理这样可以减少不必要的渲染次数服务端渲染的改进引入新的 api createRoot 创建 root 节点移除对 IE 支持继续使用需要 17版本 JSX 相关 js 是一种动态类型的脚本语言jsx 是 react 的扩展语法主要用于定义组件UI的结构和外观最后需要通过构建工具转换为普通的js代码JSX是React的一个语法扩展它允许你在JavaScript代码中写类似HTML的标记。Babel会将JSX代码转换成普通的JavaScript代码所有的JSX元素都会被转换成React.createElement函数调用 react 输出两次 组件被开发模式下的严格模式包裹组件渲染或副作用函数会执行两次不影响生产模式函数式编程纯函数的概念用于帮助开发者发现和修复潜在的问题 函数式编程 总结一下 函数式编程有两个核心概念。 数据不可变无副作用 它要求你所有的数据都是不可变的这意味着如果你想修改一个对象那你应该创建一个新的对象用来修改而不是修改已有的对象。无状态 主要是强调对于一个函数不管你何时运行它都应该像第一次运行一样给定相同的输入给出相同的输出完全不依赖外部状态的变化。 纯函数带来的意义。 便于测试和优化这个意义在实际项目开发中意义非常大由于纯函数对于相同的输入永远会返回相同的结果因此我们可以轻松断言函数的执行结果同时也可以保证函数的优化不会影响其他代码的执行。可缓存性因为相同的输入总是可以返回相同的输出因此我们可以提前缓存函数的执行结果。更少的 Bug使用纯函数意味着你的函数中不存在指向不明的 this不存在对全局变量的引用不存在对参数的修改这些共享状态往往是绝大多数 bug 的源头。 React 批处理机制 在事件处理函数的更新不是一个个重新渲染处理的而是批处理多个状态将更新操作放入一个队列中下一段时间一次性执行更新操作状态更新完成前一般是无法打印状态的最新值的只能等到下一次React 的状态更新是异步处理的可以使用回调函数进行更新 http请求头有哪些 常见请求头Accept 接受的内容、字符集、编码方式Content 请求体的类型、长度缓存机制强制缓存、协商缓存标识 本地存储 Cookie是在客户端存储数据的机制用于存储少量用户信息4KB可以设置过期时间基于浏览器。Session是在服务器端存储用户状态的机制用于存储用户的登录状态和其他相关信息占用服务器资源基于服务器。Token是一种无状态的身份验证机制用于验证用户身份可以包含用户信息不占用服务器资源可以存储在客户端或服务器。IndexedDB 是一个运行在浏览器上的非关系型数据库系统它允许你存储大量数据包括文件和二进制数据 性能优化方面 代码层面 使用防抖和节流减少页面的重排和重绘要统一调整样式、多次修改 DOM 先脱离标准流事件触发使用事件委托机制按需加载如单页面应用的路由懒加载 构建方面 开启 gzip 压缩代码vite 使用 vite-plugin-compression 插件后端开启 gzip 支持常用的第三库使用 CDN 服务就是部署多个服务器节点用户请求将定位到离用户最近的节点 其他 优先使用缓存减少HTTP请求将多个细小请求可以合并大文件图⽚优化对图片进⾏压缩和优化减少图片的⼤⼩和请求次数使⽤字体图标使⽤字体图标可以减少图片的请求提⾼页面性能服务端渲染 用户体验 增加骨架屏、loading加载动画效果 webgl 的优化手段 监视渲染帧率、控制台lighthouse性能报告良好的编码规则将场景中不需要的对象通过 remove dispose 进行清除废置使用廉价的灯光如环境光和平行光阴影方面优化阴影贴图范围降低分辨率贴图尺寸贴图、模型等资源进行压缩谨慎使用抗锯齿和后期处理通道着色器指定精度、保持代码简单、使用贴图纹理表示噪波尽可能在顶点着色器进行计算并将结果发送到片元着色器 着色器优化相关 着色器指定精度、保持代码简单、使用贴图纹理表示噪波尽可能在顶点着色器进行计算并将结果发送到片元着色器 缓冲区和深度测试 概述几何体由一个个顶点粒子构成每个粒子包含了位置、uv贴图3d2d坐标对应等三个顶点形成一个面在three.js中。物体由一个个三角形面构成。 BufferGeometry是面片、线或点几何体的有效表述。包括顶点位置面片索引、法相量、颜色值、UV 坐标和自定义缓存属性值。使用 BufferGeometry 可以有效减少向 GPU 传输上述数据所需的开销。目前three.js的物体都用上了Buffer可以直接调用一些顶点可以使用这个。 当WebGL绘制粒子时WebGL会测试正在绘制的粒子哪个更靠前在其后面的粒子不会被绘制在其前面的粒子会被绘制这被称为深度测试可以通过alphaTest停用depth testing。 异步 setTimeout(function () {console.log(1) }, 0)new Promise(function (resolve, reject) {console.log(2)for (var i 0; i 10000; i) {if (i 10) console.log(10)i 9999 resolve()}console.log(3) }).then(function () {console.log(4) })console.log(5)//2 10 3 5 4 1计时器宏任务放入宏任务队列new Promise 立即执行函数输出 2promise 微任务放入微任务队列进入 for 循环输出10 3同步任务输出 5微任务输出 4宏任务输出 1 原型和原型链 function Foo() {getName function () {console.log(1)}return this }Foo.getName function () {console.log(2) } Foo.prototype.getName function () {console.log(3) } var getName function () {console.log(4) } function getName() {console.log(5) }Foo.getName() //2 getName() //4 Foo().getName() //1 new Foo().getName() //3Foo.getName 绑定到类的方法 2var 存在变量提升function fn1(){} 定义的函数也会变量提升结果如下 var getName function getName() {console.log(5) }getName function () {console.log(4) } //node 环境运行报错、let 声明不可用Foo() 返回 this 指向window 但是进行 Foo()函数getName 被重新赋值了所以是 1以后也是1new Foo() 指向当前实例内部的方法 返回3 倒序输出 // 输入1-2-3-4-5-NULL // 输出5-4-3-2-1-NULLfunction traverseStr(str) {const array str.split(-).slice(0, -1)return array.reverse().join(-) -NULL }const target 1-2-3-4-5-NULL const result traverseStr(target) console.log(result)汉语表达 次数最少字符 const target aaabbbcceeff function removeStr(target) {let map new Map(),result []for (let ch of target) map.set(ch, (map.get(ch) || 0) 1)let minCount Math.min(...map.values())for (let ch of target) {if (map.get(ch) ! minCount) result.push(ch)}return result.join() }const result removeStr(target) console.log(result)面试复盘 之前面试的一些八股文、总结大部分都在自己内部的语雀文档后续逐步整理一下发出来希望能够帮助到面试的小伙伴大概是12月12号一面第二天的二面但是第二轮面试挂了。数字转为汉字那题没写出来只是说了一下大概的思路后续源码整理到算法仓库里面去除出现最少字符虽然写出来了可能代码逻辑还有待优化的地方webgl 和着色器优化那部分答的一般

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

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

相关文章

大学班级网站建设做自媒体需要哪些网站

torch.nn.Module.apply 是 PyTorch 中用于递归地应用函数到模型的所有子模块的方法。它允许对模型中的每个子模块进行操作,比如初始化权重、改变参数类型等。 以下是关于 torch.nn.Module.apply 的示例: 1. 语法 Module.apply(fn)Module:P…

网站排版注册网站时手机号格式不正确

支持向量机(SVM)的异常检测 SVM通常应用于监督式学习,但OneClassSVM[8]算法可用于将异常检测这样的无监督式学习,它学习一个用于异常检测的决策函数其主要功能将新数据分类为与训练集相似的正常值或不相似的异常值。 OneClassSVM OneClassSVM的思想来源于这篇论文[9],SVM使用…

烟台北京网站建设梵克雅宝戒指

前言:最近在学以太网通讯,发现RMII接口配置的时钟管脚有MCU自己输出,想要看看是怎么输出的,对此进行记录 1、交接项目项目上使用的是PA8管脚来输出时钟50MHZ,提供给上面refclk。 先看手册 PA8的复用功能具备将MCU时钟…

男女做暧暧网站做一个小游戏要多少钱

声明周期与组件卸载 props配置:使用组件时传入数据state私有数据:组件内部使用的数据 state的使用注意事项 必须使用setState方法来更改state多个setState会合并调用props和state更新数据要谨慎(有可能在异步程序中更新)setState…

男女做那个的网站是什么淄博优化公司

目录 一、问题 二、实现方式 三、总结 tiips:如嫌繁琐,直接移步总结即可! 一、问题 1.grid布局可以通过 grid-template-columns来指定列的宽度。且可以通过repeat来指定重复的次数。但是现在的需求是:grid布局中元素的数量不确定&#…

广州市建设企业网站平台网络服务合同侵权问题

概述 Qt的坐标系统由QPainter类控制。QPainter与QPaintDevice和QPaintEngine 类一起构成了Qt的绘画系统的基础。QPainter用于执行绘图操作,QPaintDevice是一个二维空间的抽象,可以使用QPainter在其上绘制,QPaintEngine 提供了QPainter用于在…

做网站用哪种语言成年做羞羞的视频网站space

Java解决删除字符使频率相同问题 01 题目 给你一个下标从 0 开始的字符串 word ,字符串只包含小写英文字母。你需要选择 一个 下标并 删除 下标处的字符,使得 word 中剩余每个字母出现 频率 相同。 如果删除一个字母后,word 中剩余所有字母…

黑色网站模版网站上线之后要做的工作

曾经有位老板, 每次给前端提需求,前端都说实现不了,后来他搜索了一下,发现网上都有答案。他就在招聘要求上加了条:麻烦你在说不行的时候,搜索一下。 上面是一个段子,说的有点极端了,…

企业宣传片制作公司天津天津seo排名扣费

文章目录 1. 监控指标采集1.1 zk版本高于3.6.0监控指标采集1.2 zk版本低于3.6.0监控指标采集1.3 配置promethues采集和大盘 2. 核心告警指标3. 参考文章 探讨zk的监控数据采集方式以及需要关注的核心指标,便于日常生产进行监控和巡检。 1. 监控指标采集 3.6.0 版本…

慈溪企业网站seo中华室内设计网节点图

注意的地方: Base64Encoder,Base64Decoder并不属于JDK标准库范畴,但是又包含在了JDK中 解决方法:按照如下方法设置Eclipse导入%JAVA_HOME%\jre\lib目录下的rt.jar包即可,Project->Properties,选择Java Build Path设…

那个网站上有打码的任务做北京所有做招聘类网站建站公司

利用Gitee搭建免费图床(详细教程)_gitee搭建图床-CSDN博客

濮阳网站建设通图片html网站开发工具

MongoDB,作为一款广受欢迎的NoSQL数据库,以其灵活的数据模型和出色的性能赢得了开发者的青睐。然而,随着数据量的不断增长和查询需求的日益复杂,如何确保高效的查询性能成为了关键。这时,索引的重要性便凸显出来。本文…

涿鹿网站建设购物网站建设项目可研报告

maskView基本原理 png图片透明像素的原理maskView可类比于多张png图片的叠加遮罩,原理类似maskView是iOS8以上才有的,如果要考虑兼容低版本,用maskLayer替代 //使用maskView的情况 property (nonatomic, strong)UIImageView *addImageView;…

网站建设案例策划小型公众号开发

起因 因为云开发开始收费(貌似很久了),准备改造在以前的小程序,数据转到oss上,小程序使用原生,不算专业领域, 所以先百度.... 网上的教程真的是千篇一律,大部分开局就是require(ali-oss); 好点的npm install ali-oss --save开局,拼凑操作到最后发现要用云开发,因为云…

昆明商城网站建设杭州模板建站定制

Idea远程debug 一、方法 1.1、启动时加参数 java -agentlib:jdwptransportdt_socket,servery,suspendn,address5005 -jar remote-debug-0.0.1-SNAPSHOT.jar1.2、运行时加参数 在没有显式-agentlib:jdwp参数的情况下进行远程调试: 首先,确保您的Sprin…

响应式网站建设哪里有海外域名商

目录 1、前言 2、类的引入 3、类的定义 3.1 类的两种定义方式 4、类的访问限定符 5、类的作用域 6、类的实例化 7、类对象模型 7.1 内存对齐规则 7.1 类对象的存储方式 8、this指针 8.1 this指针的特性 8.2 this指针是否可以为空 1、前言 C语言是面向过程的&#…

朝阳专业网站建设公司电子商务网站后台模板

Wordpress网站的关键字及网页描述关系网站对搜索引擎的友好程度,如果自己手动加显然太折腾了,那如何让WordPress博客自动为每篇文章自动关键字及网页描述。每篇文章的内容不同,我们该如何让wordpress自动添加文章描述和关键词呢?下…

为什么建网站电商网站开发平台用什么人开发

一,redis-事务是否拥有原子性 Redis的单条命令是保证原子性的,但是redis事务不能保证原子性 Redis事务本质:一组命令的集合。----------------- 队列 set set set 执行 -------------------事务中每条命令都会被序列化,执行过…

百度推广找谁网站推广及seo方案

在软件研发领域,项目管理和目标设定尤为关键。一个成功的软件项目不仅需要先进的技术支持,还需要一个清晰、明确且可实现的目标。SMART原则,作为一种高效的目标设定和管理方法,为软件研发提供了有力的指导。SMART是五个英文单词首…

网站设计建设流程图广告招牌制作设计软件

编写一个程序给定两个数字(每个数字均为2位数),根据要求获得新数 并完成打印 新数的千位是第一个数的个位 新数的百位是第一个数的十位 新数的十位是第二个数的十位 新数的个位是第二个数的个位 #include<stdio.h>int main(void…