分转 社招 一面

一、Vue响应式的原理

Vue2是使用object.defineproperty来做的,
在页面刚开始加载时,Vue会遍历data中的所有属性,
然后使用object.defineproerty把这些属性全部转为getter/setter,
当用户访问或修改某个属性时会触发对应的getter/setter方法,然后会通知每个组件实例对应的watch方法,
最后实现视图的更新。

defineproperty的缺点:
1.对于复杂对象需要深度监听,一次性监听到底,它的计算量是非常大的,性能也是不太好的
2.对于新增、删除操作是无法监听的,需要使用到Vue.set和Vue.set和Vue.setVue.delete来作为辅助
3.需要重写数组的原生方法来实现数组的监听

所以Vue3使用proxy代替Vue2的defineproperty。

proxy的优势:
1.它可以监听整个对象,而不需要遍历监听属性,性能会有所提升
2.它可以直接监听数组的变化,而不需要重写数组的原生方法,它的便利性会增加很多
3.它有多达13种拦截方法,所以它的功能会更强大
4.proxy作为一个新标准,它会收到浏览器厂商持续的性能优化,也就是它会享受到传说中的新标准的性能红利。

解题思路:
1.Vue2是怎么做的?
2.Vue2这种方法有什么问题?
3.Vue3是怎么做的?
4.Vue3又是怎么解决Vue2的这些问题?

二、JS数据类型

string number null undefined boolean object bigInt symbol

三、call、apply、bind

  • call/apply

call 和 apply 都是可以改变this 指向的问题, call 方法中传递参数要求一个 一个传递参数。 但是apply 方法要求传递参数是一个数组形式。

let a = {
    name: 'sunq',
    fn:function(action){
        console.log(this.name + ' love ' + action);
    }
}
let b = {name:'sunLi'}
 
// 正常的this指向
a.fn('basketball');   // sunq love basketball
// 改变this指向,并体现call与apply的区别
a.fn.apply(b,['football']); // sunLi love football
a.fn.call(b,'football'); // sunLi love football
  • bind

还是上面的示例,bind也可以实现call和apply的效果。bind的不同之处在于bind会返回一个新的函数。如果需要传参,需要再调用该函数并传参

a.fn.bind(b)('piano'); // sunLi love piano

四、什么是Promise?

Promise 是 JavaScript 中表示 异步操作最终完成或失败 的对象。它可以将异步操作的结果(成功或失败)与后续处理逻辑解耦,使代码更清晰、可读性更高。

Promise语法格式

new Promise(function (resolve, reject) {
  // resolve 表示成功的回调
  // reject 表示失败的回调
}).then(function (res) {
  // 成功的函数
}).catch(function (err) {
  // 失败的函数
})

出现了new关键字,就明白了Promise对象其实就是一个构造函数,是用来生成Promise实例的。能看出来构造函数接收了一个函数作为参数,该函数就是Promise构造函数的回调函数,该函数中有两个参数resolve和reject,这两个参数也分别是两个函数!

简单的去理解的话resolve函数的目的是将Promise对象状态变成成功状态,在异步操作成功时调用,将异步操作的结果,作为参数传递出去。reject函数的目的是将Promise对象的状态变成失败状态,在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。

<think>好的,我现在要处理用户关于华为OD模式技术面试的查询。首先,我需要确认用户的需求是什么。用户提到想了解华为OD模式下的技术面试相关内容,包括经验享。根据用户提供的引用内容,特别是引用[1]和[2],我需要结合这些信息来构建回答。 首先,我应该先概述华为OD模式的基本情况,引用[1]提到华为因制裁向OD模式,减少正编岗位,基础岗位用OD替代。这部需要简要说明,让用户了解背景。接下来,用户关心的是技术面试的经验,所以需要结构化的点回答,比如面试流程、技术考察内容、注意事项等。 引用[2]提供了技术面试的真题,特别是设计模式的类和原则,这部需要整合到技术考察内容中。设计模式是重点,可能需要详细说明常见的模式类型和例子。此外,Java八股文题库也是引用[2]提到的,所以应该提到常见的技术问题,如数据结构、算法、多线程、数据库等。 用户可能还关心面试流程,引用[1]提到华为面试流程,但具体步骤需要进一步细化,可能包括机考、技术面、综面等环节。同时,用户可能想知道如何准备,比如刷题、项目经验、沟通技巧等注意事项。需要确保每个部都有引用支持,并在适当位置添加引用标识。 接下来,生成相关问题部,需要根据回答内容提出用户可能进一步感兴趣的问题,比如机考准备、设计模式问题、项目经验展示等。确保问题与回答内容相关,帮助用户深入探索。 需要检查是否符合系统级指令,如使用正确的中文回答、LaTeX格式正确(虽然当前问题不涉及数学公式,但如果有的话要确保),生成相关问题,引用标识正确添加。此外,回答结构要清晰,点列出,使用代码块展示可能的代码示例(如果有的话)。 最后,确保引用标记正确,比如在提到面试流程时添加[^1],在涉及设计模式时引用[^2]。注意不要遗漏引用来源,保持回答的真实性和可靠性。</think>### 华为OD模式技术面试经验享 华为OD(Outsourcing Dispatch)模式是华为应对用工成本压力的形式,技术面试流程与正编岗位相似,但侧重基础能力与适配性评估。以下是关键要点: --- #### 一、**技术面试流程** 1. **机考**(编程能力测试) - 考察算法与数据结构,题目难度中等(如动态规划、二叉树遍历等)。 - 示例题目:实现快速排序或解决字符串匹配问题[^1]。 ```python # 快速排序参考代码(用户需熟悉手写) def quick_sort(arr): if len(arr) <= 1: return arr pivot = arr[0] left = [x for x in arr[1:] if x < pivot] right = [x for x in arr[1:] if x >= pivot] return quick_sort(left) + [pivot] + quick_sort(right) ``` 2. **技术一面/二面** - **八股文考察**:Java基础、设计模式、数据库原理等。 - 设计模式类举例: - 单例模式(创建型):确保类唯一实例。 - 适配器模式(结构型):兼容不同接口。 - 观察者模式(行为型):事件驱动通信。 - **场景题**:如布式系统设计、高并发解决方案。 3. **综合面试** - 项目经验深挖,关注技术选型、难点解决能力。 - 软技能评估:沟通能力、团队协作意愿。 --- #### 二、**高频考察点** 1. **数据结构与算法** - 必考:链表操作、二叉树遍历、排序算法(如时间复杂度比较$O(n^2)$ vs $O(n \log n)$)。 2. **设计模式** - 创建型模式(工厂方法)、行为型模式(策略模式)为常考点。 3. **系统设计** - 简单系统架构设计,如缓存策略(LRU)、数据库表。 --- #### 三、**注意事项** 1. **刷题准备**:LeetCode中等难度题目需熟练(如Top 100高频题)。 2. **项目复盘**:突出技术细节,避免泛泛而谈。 3. **沟通技巧**:回答时结合代码示例或公式(如解释算法复杂度$O(n)$的定义)。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值