1.厦门面试
1.Vue的生命周期阶段
vue生命周期分为四个阶段
第一阶段(创建阶段):beforeCreate,created
第二阶段(挂载阶段):beforeMount(render),mounted
第三阶段(更新阶段):beforeUpdate,updated
第四阶段(销毁阶段):beforeDestroy,destroyed
2.vue的优点
Vue.js 是一个渐进式 JavaScript 框架
(1)渐进式框架:Vue.js 可以逐步应用于项目中,从而降低了学习和集成的成本。你可以根据需要选择使用它的部分功能或全功能。
(2)简单易学:Vue.js 的核心概念简单易懂,入门门槛较低。其文档详尽,学习资源丰富,社区支持良好。
(3)组件化开发:Vue.js 提供了强大的组件系统,使得开发者可以将界面分割成可复用的组件,从而提高了开发效率和代码维护性。
(4)数据绑定:Vue.js 采用双向数据绑定(two-way data binding),可以自动同步数据和视图,简化了数据管理和视图更新的流程。
(5)虚拟 DOM:Vue.js 使用虚拟 DOM 进行高效的 DOM 操作,确保在数据更新时只对需要更新的部分进行最小化的重新渲染,从而提高性能。
(6)反应式系统:Vue.js 具有强大的响应式系统,能够高效地跟踪和响应数据变化,从而实现实时更新和高性能的数据绑定。
(7)生态系统丰富:Vue.js 具有丰富的生态系统,包括 Vue Router(用于路由管理)、Vuex(用于状态管理)和 Vue CLI(用于项目脚手架),这些工具和库能够帮助开发者快速构建和管理项目。
(8)良好的性能:由于其轻量级的设计和高效的虚拟 DOM 操作,Vue.js 在性能方面表现优异,适用于各种规模的项目。
(9)支持 TypeScript:Vue.js 完全支持 TypeScript,提供了类型安全的开发体验,进一步增强了代码的可维护性和可靠性。
(10)强大的社区和支持:Vue.js 拥有一个活跃的社区,开发者可以轻松找到相关的资源、教程和帮助,从而加速开发进程。
3.vue如何进行通信
4.springboot的框架
5.spring boot的安全机制
6.数据库ACID特性
ACID 分别代表原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
(1)原子性 (Atomicity):
**原子性确保事务中的所有操作要么全部成功,要么全部失败。**事务是一个不可分割的操作单元,任何部分的失败都会导致整个事务的回滚(即所有已执行的操作都取消),以保证数据库状态不被部分完成的操作破坏。
示例:如果一个事务包括从一个账户转账到另一个账户,原子性确保钱要么同时从一个账户扣减并增加到另一个账户,要么两者都不发生。
(2)一致性 (Consistency):
一致性保证事务在执行之前和执行之后,数据库都处于一致的状态。事务必须使数据库从一个一致的状态转变到另一个一致的状态。所有定义的数据库规则(如约束、触发器等)在事务开始和结束时必须满足。
示例:如果一个数据库规则是每个账户的余额不能为负数,一致性保证事务在执行过程中不会违反这一规则。
(3)隔离性 (Isolation):
隔离性确保多个并发事务不会互相影响,每个事务的执行结果与单独执行的结果相同。换句话说,一个事务的中间状态对其他事务是不可见的。
示例:在一个银行系统中,如果两个事务分别尝试读取和更新同一个账户的余额,隔离性确保每个事务在执行时不会受到另一个事务的干扰。
(4)持久性 (Durability):
持久性保证一旦事务提交,它对数据库的修改将永久保存,即使系统发生故障(如电源故障、崩溃等),也不会丢失已提交的事务的结果。
示例:如果一个银行系统在转账完成并提交后突然断电,持久性保证在系统恢复后转账的结果依然存在,不会丢失。
7.java对象的三大特征/特性
8.静态变量和实例变量
9.线程和进程的定义和区别
10.进程的算法(信号量、管道)
11.TCP/IP通信
12.python语言中的基本数据类型
(1)整数 (int):
用于表示整数值,可以是正数或负数,不包括小数部分。
示例:10, -3, 42
(2)浮点数 (float):
用于表示带有小数部分的数字。
示例:3.14, -0.001, 2.71828
(3)字符串 (str):
用于表示文本数据,字符串可以用单引号 ’ 或双引号 " 括起来。
示例:‘hello’, “world”, ‘Python is fun’
(4)布尔 (bool):
用于表示布尔值,只有两个值:True 和 False。
示例:True, False
(5)列表 (list):
有序的、可变的元素集合,用方括号 [] 括起来,元素之间用逗号分隔。
示例:[1, 2, 3], [‘apple’, ‘banana’, ‘cherry’], [1, ‘hello’, 3.14]
(6)元组 (tuple):
有序的、不可变的元素集合,用圆括号 () 括起来,元素之间用逗号分隔。
示例:(1, 2, 3), (‘apple’, ‘banana’, ‘cherry’), (1, ‘hello’, 3.14)
额外知识点补充:表和元组都是有序的集合,这意味着它们中的元素按照添加的顺序排列,并且可以通过索引访问。
列表可变的示例
列表是可变的,这意味着可以在创建后修改它们的内容,包括增加、删除或改变元素。
# 创建一个列表 fruits = ['apple', 'banana', 'cherry'] print(f"原始列表: {fruits}") # 修改列表中的元素 fruits[1] = 'blueberry' print(f"修改后的列表: {fruits}") # 添加新元素 fruits.append('date') print(f"添加元素后的列表: {fruits}") # 删除元素 fruits.remove('apple') print(f"删除元素后的列表: {fruits}")
输出:
原始列表: ['apple', 'banana', 'cherry'] 修改后的列表: ['apple', 'blueberry', 'cherry'] 添加元素后的列表: ['apple', 'blueberry', 'cherry', 'date'] 删除元素后的列表: ['blueberry', 'cherry', 'date']
元组不可变的示例
元组是不可变的,这意味着一旦创建就不能修改它们的内容。任何试图修改元组的操作都会引发错误。
# 创建一个元组 coordinates = (10, 20, 30) print(f"原始元组: {coordinates}") # 尝试修改元组中的元素(会引发错误) try: coordinates[1] = 40 except TypeError as e: print(f"尝试修改元组引发错误: {e}") # 尝试添加新元素(会引发错误) try: coordinates.append(40) except AttributeError as e: print(f"尝试添加元素引发错误: {e}") # 尝试删除元素(会引发错误) try: del coordinates[0] except TypeError as e: print(f"尝试删除元素引发错误: {e}")
输出:
原始元组: (10, 20, 30) 尝试修改元组引发错误: 'tuple' object does not support item assignment 尝试添加元素引发错误: 'tuple' object has no attribute 'append' 尝试删除元素引发错误: 'tuple' object doesn't support item deletion
列表和元组为什么是有序的
列表和元组都是有序的集合,这意味着它们的元素按添加的顺序存储和访问。顺序性确保每个元素都有一个固定的位置,可以通过索引访问。无论列表还是元组,其有序性主要体现在以下两个方面:
按顺序存储:元素按照插入的顺序存储,并且不会改变。
按索引访问:可以使用索引来访问特定位置的元素。
列表和元组为什么是有序的
列表和元组都是有序的集合,这意味着它们的元素按添加的顺序存储和访问。顺序性确保每个元素都有一个固定的位置,可以通过索引访问。无论列表还是元组,其有序性主要体现在以下两个方面:
按顺序存储:元素按照插入的顺序存储,并且不会改变。
按索引访问:可以使用索引来访问特定位置的元素。
# 列表 list_example = ['a', 'b', 'c'] print(f"列表中的第一个元素: {list_example[0]}") # 输出: 'a' # 元组 tuple_example = ('x', 'y', 'z') print(f"元组中的第一个元素: {tuple_example[0]}") # 输出: 'x'
这种有序性使得列表和元组适合需要顺序访问元素的场景,比如遍历、切片等操作。
(7)集合 (set):
无序的、不重复的元素集合,用花括号 {} 括起来。
示例:{1, 2, 3}, {‘apple’, ‘banana’, ‘cherry’}, {1, ‘hello’, 3.14}
(8)字典 (dict):
无序的键值对集合,用花括号 {} 括起来,键值对用冒号 : 分隔。
示例:{‘name’: ‘Alice’, ‘age’: 25}, {‘apple’: 1, ‘banana’: 2, ‘cherry’: 3}
(9)NoneType:
用于表示空值或无值的对象,只有一个值 None。
示例:None
(10)字节 (bytes):
(11)字节数组 (bytearray):
类似于字节对象,但可以修改其内容。
示例:bytearray(b’hello’)
(12)记号 (complex):
用于表示复数,形式为 a + bj,其中 a 和 b 是浮点数,j 表示虚数单位。
示例:3 + 4j, 1.5 + 0.5j