每日十题八股-2025年2月21日-补充材料

1.final关键词有什么作用?

参考

final关键字可以用来修饰局部变量,成员变量,方法和类。
特点:凡是引用final关键字的地方皆不可修改!
(1)修饰类:表示该类不能被继承;
(2)修饰方法:表示方法不能被重写;
(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。当final修饰的是一个基本数据类型数据时, 这个数据的值在初始化后将不能被改变; 当final修饰的是一个引用类型数据时, 也就是修饰一个对象时, 引用在初始化后将永远指向一个内存地址, 不可修改. 但是该内存地址中保存的对象信息, 是可以进行修改的.

final 变量可以安全的在多线程环境下进行共享,而不需要额外的同步开销。

2.java中=和equals的区别

java中的==和equals()最大的区别是:一个是运算符,一个是方法。 ==操作符专门用来比较变量的值是否相同,对于基本数据类型比较值,对于引用类型对象比较指向的内存地址。 eqauls本质是也是通过==实现的,但目前equals方法常用来比较对象的内容是否相同。那是因为许多类,如果String,Integer等,通过重写equals来实现对对象内部数据的相等判断。

3.ArrayList 和 Array 有什么区别?

Array和ArrayList都可以用来存储多个元素,但它们有以下区别: 数组是一种基本的数据结构,它在内存中分配一段连续的空间,用于存储同一类型的元素。 而ArrayList是Java集合框架中的一种动态数组,它是基于数组实现的,可以动态地增加或删除元素,因此它的长度可以根据需要自动调整。

ArrayList不能存储基础数据类型,只能存储类对象。

Array都内置了length变量,而ArrayList通过size函数获得数组长度。

Array可以直接通过下标访问数据,而ArrayList需要调用get函数。

4.ArrayList的扩容机制

扩容的主体过程在grow函数里面,每次扩容为原容量的1.5倍左右,如果还没有达到要求则会直接扩容到hugeCapacity。然后使用Arrays.copy函数将原数组复制到扩容后的新数组中。初始化中为指定ArrayList容量使用默认值10。
/**

  • 扩容 ArrayList 的方法,确保能够容纳指定容量的元素
  • @param minCapacity 指定容量的最小值
    */
    private void grow(int minCapacity) {
    // 检查是否会导致溢出,oldCapacity 为当前数组长度
    int oldCapacity = elementData.length;
    int newCapacity = oldCapacity + (oldCapacity >> 1); // 扩容至原来的1.5倍
    if (newCapacity - minCapacity < 0) // 如果还是小于指定容量的最小值
    newCapacity = minCapacity; // 直接扩容至指定容量的最小值
    if (newCapacity - MAX_ARRAY_SIZE > 0) // 如果超出了数组的最大长度
    newCapacity = hugeCapacity(minCapacity); // 扩容至数组的最大长度
    // 将当前数组复制到一个新数组中,长度为 newCapacity
    elementData = Arrays.copyOf(elementData, newCapacity);
    }
### uni-app 常见面试题及解答 #### 什么是 uni-app? uni-app 是一个基于 Vue.js 的跨平台开发框架,允许开发者编写一次代码并将其部署到多个平台上,包括微信小程序、H5、App 和其他主流的小程序生态。它通过抽象不同平台的 API 差异,提供了一套统一的语法和接口[^1]。 #### uni-app 支持哪些平台? uni-app 支持多种平台,主要包括但不限于以下几种: - 微信小程序 - 支付宝小程序 - 百度小程序 - 字节跳动小程序 - H5 页面 - Android 应用 - iOS 应用 这些平台的支持使得 uni-app 成为了一个多端适配的强大工具[^2]。 #### 如何实现页面跳转? 在 uni-app 中,可以使用 `uni.navigateTo` 或者 `uni.redirectTo` 方法来进行页面跳传。两者的区别在于前者会保留当前页面栈,而后者则会关闭当前页面再跳转至目标页面。以下是具体的代码示例: ```javascript // 跳转到新页面并保留当前页面 uni.navigateTo({ url: '/pages/targetPage/targetPage' }); // 关闭当前页面并跳转到指定页面 uni.redirectTo({ url: '/pages/targetPage/targetPage' }); ``` 上述方法适用于小程序环境下的页面切换操作[^3]。 #### uni-app 中如何处理数据绑定? 类似于 Vue.js,uni-app 使用双大括号语法进行模板中的数据绑定。例如,在组件中可以通过如下方式展示动态变量的内容: ```html <view>{{ message }}</view> ``` 其中 `message` 变量定义于脚本部分的数据对象内。此外还支持 v-model 实现双向绑定功能,方便表单输入控件与模型之间的同步更新[^4]。 #### 性能优化有哪些技巧? 对于性能优化方面可以从以下几个角度入手: 1. **减少不必要的 DOM 操作**:尽量利用虚拟 DOM 提升渲染效率; 2. **按需加载资源文件**:避免一次性引入过多静态素材增加首屏耗时; 3. **合理设置缓存策略**:针对图片或其他外部链接采用本地存储机制降低服务器压力; 4. **压缩传输包大小**:移除无用依赖项并通过打包工具精简最终产物体积[^5]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值