- 什么是数据?
1.所有能被输入到计算机中,且能被计算机处理的符号的总称。如:实数、整数、字符(串)、图形和声音等。
2.是计算机操作对象的集合。
3.是计算机处理的信息的某种特定的符号表示形式。
- 算法的五种性质
1.有穷性
2.确定性
3.有效性
4.输入
5.输出
- 算法设计的目标
1.正确性
2.可读性
3.健壮性
4.高效率(时间与空间)
- 算法的描述方式:
1.自然语言
2.程序设计语言
3.伪代码
4.流程图
- 多项式时间算法的时间复杂度有哪些形式?
1.常量阶:O(1)
2.线性阶:O(n)
3.平方阶:O(n2)
4.立方阶
5.对数阶
6.线性对数阶
- 按照数据元素之间逻辑关系的特性可分为哪几类(作简要说明)?
1.集合
集合中数据元素之间除了“同属于一个集合”的特性外,数据元素之间无其他关系,它们之间的关系称为是松散性的
2.线性结构
线性结构中数据元素之间存在“一对一”的关系
3.树形结构
树形结构中数据元素之间存在“一对多”的关系
4.图形结构
图形结构中数据元素之间存在“多对多”的关系
- 列举几个常见的链表(至少三个)?
1.单链表
1.循环链表
2.双向链表
3.双向循环链表
- 顺序表与链表的比较
1.链表比较灵活,插入和删除操作效率较高,但空间利用率低,适用于实现动态的线性表;
2.顺序表实现比较简单,并且空间利用率也较高,可高效的进行随机存取,但顺序表不易扩充,插入和删除操作效率较低,适合于实现相对“稳定”的静态线性表。
- 静态查找与动态查找分别是什么?
静态查找表:查找表的操作不包含对表的修改操作。也就是仅对查找表进行查找或读表元操作。
动态查找表:若在查找的同时插入了表中不存在的记录,或从查找表中删除了已存在的记录。
- 动态表查找有什么特点?
表结构本身是在查找过程中动态生成的,即对于给定值key,若表中存在关键字值等于key的记录,则查找成功返回;否则插入关键字值等于key的记录。
- 什么是二叉排序树?
二叉排序树或者是一棵空树,或者是一颗具有下列性质的二叉树:
① .若左子树不空,则左子树上所有结点的值均小于根结点的值;
② .若右子树不空,则右子树上所有结点的值均大于根结点的值;
③ .它的左右子树也都是二叉排序树
- 简述什么是结点的平衡因子。
结点的平衡因子:该结点的左子树深度与右子树深度之差,又称为平衡度。
① .平衡二叉树也就是树中任意结点的平衡因子的绝对值小于等于1的二叉树。
② .在AVL树中的结点平衡因子可能有3种取值:-1、0、1
- 在哈希表查找中,对数字的关键字常用的哈希函数有哪些(不少于5个)
1. 除留余数法
2. 平方取中法
3. 直接定址法
4. 折叠法
5. 数字分析法
6. 随机数法
- 在哈希表查找中,常用的处理哈希冲突的方法有哪些(不少于3个)
1. 开放定址法
2. 链地址法
3. 公共溢出区法
4. 再哈希法
- computed 和 watch 的区别
computed: 是计算属性,依赖其它属性值,并且 computed 的值有缓存,只有它依赖的属性值发生改变,下一次获取 computed 的值时才会重新计算 computed 的值;
watch: 更多的是“观察”的作用,类似于某些数据的监听回调,每当监听的数据变化时都会执行回调进行后续操作;
- vue-router 路由模式有几种?
vue-router 有 3 种路由模式:hash、history、abstract
各模式的说明如下:
hash: 使用 URL hash 值来作路由。支持所有浏览器,包括不支持 HTML5 History Api 的浏览器;
history : 依赖 HTML5 History API 和服务器配置。具体可以查看 HTML5 History 模式;
abstract : 支持所有 JavaScript 运行环境,如 Node.js 服务器端。如果发现没有浏览器的 API,路由会自动强制进入这个模式.
- vue中为什么data是一个函数
组件的data写成一个函数,数据以函数返回值形式定义,这样每复用一次组件,就会返回一份新的data,类似于给每个组件实例创建一个私有的数据空间,让各个组件实例维护各自的数据。如果单纯的写成对象形式,就使得所有组件实例共用了一份data,这样一个实例中更新数据会导致其他实例数据改变。
- v-if 和 v-show 的区别
v-if 在编译过程中会被转化成三元表达式,条件不满足时不渲染此节点。
v-show 会被编译成指令,条件不满足时控制样式将此节点隐藏
- 请列举几个vue内部指令,并说明其作用(至少五个)
1. v-bind:绑定属性,动态更新HTML元素上的属性。例如 v-bind:class;
2. v-on:用于监听DOM事件。例如 v-on:click v-on:keyup;
3. v-text:更新元素的textContent;
4. v-model:用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值;
5. v-for:循环指令编译出来的结果是 -L 代表渲染列表。优先级比v-if高最好不要一起使用,尽量使用计算属性去解决;
6. v-show:使用指令来实现 -- 最终会通过display来进行显示隐藏;
- 你建不建议v-if和v-for一起使用?为什么?
v-for和v-if不要在同一标签中使用,因为解析时先解析v-for在解析v-if。如果遇到需要同时使用时可以考虑写成计算属性的方式。
- v-for为什么要加key
v-for遍历时,key是Vue中vnode的唯一标记,通过这个 key,我们的 diff 操作可以更准确、更快速。
更准确是因为带 key时,在sameNode函数进行key值对比中可以避免就地复用的情况。所以会更加准确。
更快速是利用 key 的唯一性生成 map 对象来获取对应节点,比遍历方式更快
- 什么是微服务框架?
微服务架构就是将单体的应程序分成多个应程序,这多个应程序就成为微服务,每个微服务运行在自己的进程中,并使用轻量级的通信机制。这些服务围绕业务能力来划分,并通过自动化机制来独立部署。汶些服务可以使用不同的编程语言,不同数据库,以保证最低限度的集中式管理
- Spring Cloud是什么
Spring Cloud是一系列框架的有序集合,它利用Spring Boot的开发便利性巧妙的简化了分布式系统基础设施的开发,如服务发现、配置中心、智能路由、消息总线、负载均衡等,都可以用Spring Boot的开发风格来做到一键部署和启动。
Spring Cloud将各家公司开发的比较成熟的服务框架组合起来,通过Spring Boot风格进行再封装,屏蔽掉了复杂的配置和实现原理,最终给开发者一套易懂、易部署和易维护的分布式系统开发工具包。
- Spring Cloud和Spring Boot的区别
Spring Boot专注于快速方便的开发单个个体微服务。
Spring Cloud关注全局,它将Spring Boot开发的单体微服务整合并管理起来
Spring Cloud为各个微服务之间提供配置管理、服务发现、路由、熔断、降级等等集成服务。
Spring Boot可以离开Spring Cloud独立使用开发项目,Spring Cloud离不开Spring Boot,属于依赖关系
Spring Boot专注于微服务个体,Spring Cloud关注全局的微服务治理
- SpringCloud Alibaba有哪些主要功能?
- 分布式配置:分布式系统的外部配置管理,配置中心可视化、分环境配置控制。配置动态更新能力。
- 服务注册与发现:适配SpringCloud标准的服务注册与服务发现管理。
- 服务限流与降级:可通过控制台进行实时的修改限流降级的规则,实时的Metrics监控。支持多种协议
- 消息驱动:基于RocketMQ实现消息驱动的业务场景开发。
- 分布式事务:开源Seata使用@GlobalTransactional注解,零侵入的实现分布式事务的支持。
- SpringCloud Alibaba核心组件有哪些?
- Nacos (配置中心与服务注册与发现)
- Sentinel (分布式流控)
- RocketMQ (消息队列)
- Seata (分布式事务)
- Dubbo (RPC)
- Nacos是什么,他有哪些关键特性?
Nacos用于服务的注册发现与服务的配置管理,它提供了简单易用的Web Console。可以帮助开发者快速的实现服务发现、服务配置管理、服务元数据等需求
它的关键特性主要有:
- 服务发现和服务健康监测
- 动态配置服务
- 动态 DNS 服务
- 服务及其元数据管理
- Sentinel是什么,它有什么作用?
Sentinel是一个高可用的流量控制与防护组件,保障微服务的稳定性。
Sentinel分为两个部分,sentinel-core与sentinel-dashboard。
sentinel-core 部分能够支持在本地引入sentinel-core进行限流规则的整合与配置。
sentinel-dashboard 则在core之上能够支持在线的流控规则与熔断规则的维护与调整等。
- 熔断和降级的区别?
- 服务降级有很多种降级方式!如开关降级、限流降级、熔断降级!
- 服务熔断属于降级方式的一种!
- 当发生下游服务不可用的情况,熔断和降级必定是一起出现。
- 服务降级大多是属于一种业务级别的处理,熔断属于框架层级的实现
- 什么是Feign?
Feign是一个声明web服务客户端,这使得编写web服务客户端更容易
Feign将我们需要调用的服务方法定义成抽象方法保存在本地就可以了,不需要自己构建Http请求,直接调用接口即可,不过要注意的是,调用的方法要和本地抽象方法的签名完全一致。
- Spring Cloud Gateway是什么,它有什么作用?
Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量控制组件,在微服务系统中有着非常重要的作用,网关常见的功能有转发、权限校验、限流控制等作用
- 什么是Redis,它有哪些基本数据类型?
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,Redis支持的基本数据类型如下:
- 字符串类型 string
- 散列类型 hash
- 列表类型 list
- 集合类型 set
- 有序集合类型 sortedset
- 有哪些场景可以使用 RabbitMQ?
- 服务间异步通信
- 顺序消费
- 定时任务
- 请求削峰
- RabbitMQ有哪几种常见的工作模式?
- Work queues
- Publish/Subscribe:发布订阅模式
- Routing:路由模式
- Topics
- Header
- RPC
- MQ的优点有哪些?
- 异步处理 - 相比于传统的串行、并行方式,提高了系统吞吐量。
- 应用解耦 - 系统间通过消息通信,不用关心其他系统的处理。
- 流量削锋 - 可以通过消息队列长度控制请求量;可以缓解短时间内的高并发请求。
- 日志处理 - 解决大量日志传输。
- 消息通讯 - 消息队列一般都内置了高效的通信机制,因此也可以用在纯的消息通讯。