【简答题】月薪4k和月薪8k的区别就在这里

2023-02-27 12:52:58 浏览数 (1)

  1. 什么是数据?

1.所有能被输入到计算机中,且能被计算机处理的符号的总称。如:实数、整数、字符(串)、图形和声音等。

2.是计算机操作对象的集合。

3.是计算机处理的信息的某种特定的符号表示形式。

  1. 算法的五种性质

1.有穷性

2.确定性

3.有效性

4.输入

5.输出

  1. 算法设计的目标

1.正确性

2.可读性

3.健壮性

4.高效率(时间与空间)

  1. 算法的描述方式:

1.自然语言

2.程序设计语言

3.伪代码

4.流程图

  1. 多项式时间算法的时间复杂度有哪些形式?

1.常量阶:O(1)

2.线性阶:O(n)

3.平方阶:O(n2)

4.立方阶

5.对数阶

6.线性对数阶

  1. 按照数据元素之间逻辑关系的特性可分为哪几类(作简要说明)?

1.集合

集合中数据元素之间除了“同属于一个集合”的特性外,数据元素之间无其他关系,它们之间的关系称为是松散性的

2.线性结构

线性结构中数据元素之间存在“一对一”的关系

3.树形结构

树形结构中数据元素之间存在“一对多”的关系

4.图形结构

图形结构中数据元素之间存在“多对多”的关系

  1. 列举几个常见的链表(至少三个)?

1.单链表

1.循环链表

2.双向链表

3.双向循环链表

  1. 顺序表与链表的比较

1.链表比较灵活,插入和删除操作效率较高,但空间利用率低,适用于实现动态的线性表;

2.顺序表实现比较简单,并且空间利用率也较高,可高效的进行随机存取,但顺序表不易扩充,插入和删除操作效率较低,适合于实现相对“稳定”的静态线性表。

  1. 静态查找与动态查找分别是什么?

静态查找表:查找表的操作不包含对表的修改操作。也就是仅对查找表进行查找或读表元操作。

动态查找表:若在查找的同时插入了表中不存在的记录,或从查找表中删除了已存在的记录。

  1. 动态表查找有什么特点?

表结构本身是在查找过程中动态生成的,即对于给定值key,若表中存在关键字值等于key的记录,则查找成功返回;否则插入关键字值等于key的记录。

  1. 什么是二叉排序树?

二叉排序树或者是一棵空树,或者是一颗具有下列性质的二叉树:

① .若左子树不空,则左子树上所有结点的值均小于根结点的值;

② .若右子树不空,则右子树上所有结点的值均大于根结点的值;

③ .它的左右子树也都是二叉排序树

  1. 简述什么是结点的平衡因子。

结点的平衡因子:该结点的左子树深度与右子树深度之差,又称为平衡度。

① .平衡二叉树也就是树中任意结点的平衡因子的绝对值小于等于1的二叉树。

② .在AVL树中的结点平衡因子可能有3种取值:-1、0、1

  1. 在哈希表查找中,对数字的关键字常用的哈希函数有哪些(不少于5个)

1. 除留余数法

2. 平方取中法

3. 直接定址法

4. 折叠法

5. 数字分析法

6. 随机数法

  1. 在哈希表查找中,常用的处理哈希冲突的方法有哪些(不少于3个)

1. 开放定址法

2. 链地址法

3. 公共溢出区法

4. 再哈希法

  1. computed 和 watch 的区别

computed: 是计算属性,依赖其它属性值,并且 computed 的值有缓存,只有它依赖的属性值发生改变,下一次获取 computed 的值时才会重新计算 computed 的值;

watch: 更多的是“观察”的作用,类似于某些数据的监听回调,每当监听的数据变化时都会执行回调进行后续操作;

  1. 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,路由会自动强制进入这个模式.

  1. vue中为什么data是一个函数

组件的data写成一个函数,数据以函数返回值形式定义,这样每复用一次组件,就会返回一份新的data,类似于给每个组件实例创建一个私有的数据空间,让各个组件实例维护各自的数据。如果单纯的写成对象形式,就使得所有组件实例共用了一份data,这样一个实例中更新数据会导致其他实例数据改变。

  1. v-if 和 v-show 的区别

v-if 在编译过程中会被转化成三元表达式,条件不满足时不渲染此节点。

v-show 会被编译成指令,条件不满足时控制样式将此节点隐藏

  1. 请列举几个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来进行显示隐藏;

  1. 你建不建议v-if和v-for一起使用?为什么?

v-for和v-if不要在同一标签中使用,因为解析时先解析v-for在解析v-if。如果遇到需要同时使用时可以考虑写成计算属性的方式。

  1. v-for为什么要加key

v-for遍历时,key是Vue中vnode的唯一标记,通过这个 key,我们的 diff 操作可以更准确、更快速。

更准确是因为带 key时,在sameNode函数进行key值对比中可以避免就地复用的情况。所以会更加准确。

更快速是利用 key 的唯一性生成 map 对象来获取对应节点,比遍历方式更快

  1. 什么是微服务框架?

微服务架构就是将单体的应程序分成多个应程序,这多个应程序就成为微服务,每个微服务运行在自己的进程中,并使用轻量级的通信机制。这些服务围绕业务能力来划分,并通过自动化机制来独立部署。汶些服务可以使用不同的编程语言,不同数据库,以保证最低限度的集中式管理

  1. Spring Cloud是什么

Spring Cloud是一系列框架的有序集合,它利用Spring Boot的开发便利性巧妙的简化了分布式系统基础设施的开发,如服务发现、配置中心、智能路由、消息总线、负载均衡等,都可以用Spring Boot的开发风格来做到一键部署和启动。

Spring Cloud将各家公司开发的比较成熟的服务框架组合起来,通过Spring Boot风格进行再封装,屏蔽掉了复杂的配置和实现原理,最终给开发者一套易懂、易部署和易维护的分布式系统开发工具包。

  1. Spring Cloud和Spring Boot的区别

Spring Boot专注于快速方便的开发单个个体微服务。

Spring Cloud关注全局,它将Spring Boot开发的单体微服务整合并管理起来

Spring Cloud为各个微服务之间提供配置管理、服务发现、路由、熔断、降级等等集成服务。

Spring Boot可以离开Spring Cloud独立使用开发项目,Spring Cloud离不开Spring Boot,属于依赖关系

Spring Boot专注于微服务个体,Spring Cloud关注全局的微服务治理

  1. SpringCloud Alibaba有哪些主要功能?
  2. 分布式配置:分布式系统的外部配置管理,配置中心可视化、分环境配置控制。配置动态更新能力。
  3. 服务注册与发现:适配SpringCloud标准的服务注册与服务发现管理。
  4. 服务限流与降级:可通过控制台进行实时的修改限流降级的规则,实时的Metrics监控。支持多种协议
  5. 消息驱动:基于RocketMQ实现消息驱动的业务场景开发。
  6. 分布式事务:开源Seata使用@GlobalTransactional注解,零侵入的实现分布式事务的支持。
  7. SpringCloud Alibaba核心组件有哪些?
  8. Nacos (配置中心与服务注册与发现)
  9. Sentinel (分布式流控)
  10. RocketMQ (消息队列)
  11. Seata (分布式事务)
  12. Dubbo (RPC)
  13. Nacos是什么,他有哪些关键特性?

Nacos用于服务的注册发现与服务的配置管理,它提供了简单易用的Web Console。可以帮助开发者快速的实现服务发现、服务配置管理、服务元数据等需求

它的关键特性主要有:

  1. 服务发现和服务健康监测
  2. 动态配置服务
  3. 动态 DNS 服务
  4. 服务及其元数据管理
  5. Sentinel是什么,它有什么作用?

Sentinel是一个高可用的流量控制与防护组件,保障微服务的稳定性。

Sentinel分为两个部分,sentinel-core与sentinel-dashboard。

sentinel-core 部分能够支持在本地引入sentinel-core进行限流规则的整合与配置。

sentinel-dashboard 则在core之上能够支持在线的流控规则与熔断规则的维护与调整等。

  1. 熔断和降级的区别?
  2. 服务降级有很多种降级方式!如开关降级、限流降级、熔断降级!
  3. 服务熔断属于降级方式的一种!
  4. 当发生下游服务不可用的情况,熔断和降级必定是一起出现。
  5. 服务降级大多是属于一种业务级别的处理,熔断属于框架层级的实现
  6. 什么是Feign?

Feign是一个声明web服务客户端,这使得编写web服务客户端更容易

Feign将我们需要调用的服务方法定义成抽象方法保存在本地就可以了,不需要自己构建Http请求,直接调用接口即可,不过要注意的是,调用的方法要和本地抽象方法的签名完全一致。

  1. Spring Cloud Gateway是什么,它有什么作用?

Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量控制组件,在微服务系统中有着非常重要的作用,网关常见的功能有转发、权限校验、限流控制等作用

  1. 什么是Redis,它有哪些基本数据类型?

Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,Redis支持的基本数据类型如下:

  1. 字符串类型 string
  2. 散列类型 hash
  3. 列表类型 list
  4. 集合类型 set
  5. 有序集合类型 sortedset
  6. 有哪些场景可以使用 RabbitMQ?
  7. 服务间异步通信
  8. 顺序消费
  9. 定时任务
  10. 请求削峰
  11. RabbitMQ有哪几种常见的工作模式?
  12. Work queues
  13. Publish/Subscribe:发布订阅模式
  14. Routing:路由模式
  15. Topics
  16. Header
  17. RPC
  18. MQ的优点有哪些?
  19. 异步处理 - 相比于传统的串行、并行方式,提高了系统吞吐量。
  20. 应用解耦 - 系统间通过消息通信,不用关心其他系统的处理。
  21. 流量削锋 - 可以通过消息队列长度控制请求量;可以缓解短时间内的高并发请求。
  22. 日志处理 - 解决大量日志传输。
  23. 消息通讯 - 消息队列一般都内置了高效的通信机制,因此也可以用在纯的消息通讯。

0 人点赞