仿论坛项目--第三部分习题

1.关于前缀树的特征描述不正确的是:

根节点不包含字符,除根节点以外的每个节点,只包含一个字符。

从根节点到某一个节点,路径经过的字符连接起来,为该节点对应的字符串。

每个节点的所有子节点,包含的字符串不相同。

每个节点,最多只能包含2个节点。

解析:

这些描述都是关于前缀树(Trie)的一些基本特点。前缀树是一种树形结构,用于高效地存储字符串数据,常用于自动补全或拼写检查等应用。在前缀树中:

根节点通常不包含任何字符信息。

节点表示的字符串可以通过从根节点开始沿着路径向下遍历所经过的字符来确定。

同一节点的不同子节点代表不同的字符串后继。

在标准实现中,每个节点通常最多有26个子节点(对应英文字母的数量),但这并不意味着节点必须且仅限于拥有两个子节点。实际上,节点可以拥有任意数量的子节点(只要不超过字母表大小即可)。

2.下列那一项,不是前缀树的应用场景?

选项:

复制代码
记录日志
字符串检索
词频统计
字符串排序

解析:

记录日志。虽然前缀树可用于多种与字符串相关的操作,如字符串检索、词频统计等,但它并不是一种常见的记录日志的方法或工具。因此,"记录日志"不是前缀树典型的应用场景。

3.使用前缀树实现过滤敏感词算法时,需要有3个指针,它们分别是?

选项:

复制代码
有一个指针指向前缀树,用以遍历敏感词的每一个字符
有一个指针指向被过滤字符串,用以标识过滤的次数
有一个指针指向被过滤字符串,用以标识敏感词的开头
有一个指针指向被过滤字符串,用以标识敏感词的结尾

解析:

答案是:

复制代码
有一个指针指向前缀树,用以遍历敏感词的每一个字符
有一个指针指向被过滤字符串,用以标识敏感词的开头
有一个指针指向被过滤字符串,用以标识敏感词的结尾

这三个指针分别用于处理前缀树中的敏感词字符、定位敏感词在待过滤字符串中的起始位置以及结束位置。通过这种方式,可以有效地识别和替换敏感词。

4.问题:关于AJAX,下列描述错误的是?

选项:

复制代码
AJAX是Asynchronous JavaScript and XML的编写
字符串检索AJAX是指异步的JavaScript与XML,这是一门全新的技术
使用AJAX,网页能够将增量更新呈现在页面上,而不需要刷新整个页面
虽然X代表XML,但目前JSON的使用比XML更加普遍

解析:

答案是:字符串检索AJAX是指异步的JavaScript与XML,这是一门全新的技术。这个说法是错误的,因为AJAX并非一门全新的技术,而是由已有的Web技术组合而成。其他三个选项都正确地描述了AJAX的特点和用途。

5.问题:通过jQuery,将服务端返回的JSON格式的字符串转为对象,语法正确的是?

选项:

复制代码
$.parseJSON(data)
$ .ParseJson(data)
#.parseJSON(data)
#.ParseJson(data)

解析:

答案是:.parseJSON(data)。这是一个正确的jQuery方法,用于将JSON格式的字符串转换为JavaScript对象。其他选项中的".parseJSON(data)。这是一个正确的jQuery方法,用于将JSON格式的字符串转换为JavaScript对象。其他选项中的" .ParseJson(data)"、"#.parseJSON(data)"和"#.ParseJson(data)"都是错误的写法。

6.问题:使用fastjson,将JSON对象转为JSON字符串,下列语法正确的是?

选项:

复制代码
JSONObject json = new JSONObject(); json.put("x", x); json.toJSONString();
JSONObject json = new JSONObject(); json.put("x", x); json.toJsonString();
JSONObject json = new JSONObject(); json.put("x", x); json.toString();
JSONObject json = new JSONObject(); json.put("x", x); json.toJSON();

解析:

答案是:JSONObject json = new JSONObject(); json.put("x", x); json.toString()。这是因为toString()方法可以将JSON对象转化为字符串形式。其它选项中的toJSONString()和toJSON()是不存在的或者不符合题目要求的转化方式。

7.问题:关于事务的特性,下列描述中不正确的是?

选项:

复制代码
原子性,即事务是应用中不可再分的最小执行体
一致性,即事务执行的结果,必须使数据从一个一致性状态,变为另一个一致性状态
隔离性,即各个事务的执行互不干扰,任何事务的内部操作对其他的事务都是隔离的
持久性,即事务一旦提交,数据将永远不能被改变

解析:

答案是:持久性,即事务一旦提交,数据将永远不能被改变。这是错误的描述,正确的应该是"持久性,即事务一旦提交,数据将永久保存"。

8.问题:MySQL支持4种常见的隔离级别,其中最低的隔离级别是?

选项:

复制代码
Read Uncommitted(未提交读)
Read Committed(已提交读)
Repeatable Read(可重复读)
Serializable(可串行化)

答案是:Read Uncommitted(未提交读)。这是MySQL支持的四种隔离级别中最低的一个,它允许读取到未提交的数据变更,可能会出现脏读的情况。

9.问题:下列哪一种并发异常,是Repeatable Read这种隔离级别无法规避的?

选项:

复制代码
第二类丢失更新
不可重复读
脏读
幻读

解析:

答案是:幻读。在Repeatable Read(可重复读)隔离级别下,可以避免脏读以及不可重复读,但是无法避免幻读。

10.问题:关于隔离级别的实现机制,下列描述中错误的是?

选项:

复制代码
实现隔离级别的基本方式是对数据加锁,而锁分为悲观锁和乐观锁
数据库默认采用的是悲观锁,它又可分为共享锁和排他锁
乐观锁也是数据库内置的锁,它采用版本号或时间戳来判定数据的突变
锁在提高安全性的同时,会降低数据库的性能,应根据实际业务选择合适的锁

解析:

答案是:乐观锁也是数据库内置的锁。实际上,乐观锁通常不是数据库内置的锁,而是应用程序自己实现的一种锁策略。

11.问题:下列关于Spring事务管理的描述中,错误的是?

选项:

复制代码
Spring提供了声明式事务、编程式事务两种事务管理方案
声明式事务,只需通过XML或注解进行配置,即可实现对事务的管理
编程式事务,需要通过TransactionTemplate组件执行SQL,达到管理事务的目的
声明式事务优于编程式事务,应该一律采用声明式事务

解析:

答案是:声明式事务优于编程式事务,应该一律采用声明式事务。因为编程式事务也有其适用场景,并非所有情况下都优于编程式事务。

12.问题:下列关于AOP概念的描述中,错误的是?

选项:

复制代码
AOP是Aspect Oriented Programming的缩写,意为面向方面编程
AOP是一种编程思想,可以代替OOP,更好的管理应用中的对象
AOP常见的使用场景有权限检查、记录日志、事务管理
AOP是一种编程思想,是对OOP的补充,可以进一步提高编程的效率

解析:

答案是:AOP是一种编程思想,可以代替OOP,更好的管理应用中的对象。AOP并不能完全替代OOP,它们是互补的关系。

13.问题:下列关于AOP术语的描述中,错误的是?

选项:

复制代码
Joinpoint,是指目标对象上所定义的各种方法
Pointcut,是用来定义当前的横切逻辑准备织入到哪些连接点上
Advice,用来定义横切逻辑,即在连接点上准备织入什么样的逻辑
Aspect,是一个用来封装切入点和通知的组件

解析:

答案是:Joinpoint,是指目标对象上所定义的各种方法。正确的描述应该是Joinpoint指程序运行过程中的某个特定位置,如方法的调用等。

14.问题:关于织入,下列说法错误的是?

选项:

复制代码
织入,就是将方面组件中定义的横切逻辑,织入到目标对象的连接点的过程
可以在编译时织入,需要使用特殊的编译器
可以在装裁类时织入,需要使用特殊的类装载器
可以在运行时织入,需要使用特殊的JRE

解析:

答案是:可以在运行时织入,需要使用特殊的JRE。正确的描述应该是,在运行时织入需要使用特殊的框架或者容器,而不是特殊的JRE。

15.问题:关于AOP的实现,下列描述中错误的是?

选项:

复制代码
AspectJ是语言级的实现,它扩展了Java语言,定义了AOP的语法
AspectJ在编译期织入代码,它有一个专门的编译器,用来生成遵守Java字节码规范的class文件
Spring AOP使用纯Java实现,它不需要专门的编译器,也不需要特殊的类加载器
Spring AOP在运行时通过代理的方式织入代码,可以支持任意类型的连接点

解析;

答案是:Spring AOP在运行时通过代理的方式织入代码,可以支持任意类型的连接点。实际上,Spring AOP只能支持接口代理,对于没有接口的情况,可以通过CGLIB等方式实现,因此并不是任意类型都能支持。

16.问题:关于Spring AOP的实现机制,下列描述中错误的是?

选项:

复制代码
JDK动态代理,是Java提供的代理技术,可以在装栽时创建接口的代理实例
Spring AOP默认采用JDK动态代理,在接口的代理实例中织入代码
CGLib动态代理,采用底层的字节码技术,在运行时创建子类代理实例
当目标对象不存在接口时,Spring AOP会采用CGLib动态代理的方式,在子类实例中织入代码

解析:

答案是:JDK动态代理,是Java提供的代理技术,可以在装栽时创建接口的代理实例。正确的描述应该是JDK动态代理是在运行时创建接口的代理实例。

相关推荐
zhougl9961 小时前
html处理Base文件流
linux·前端·html
花花鱼1 小时前
node-modules-inspector 可视化node_modules
前端·javascript·vue.js
HBR666_1 小时前
marked库(高效将 Markdown 转换为 HTML 的利器)
前端·markdown
·薯条大王2 小时前
MySQL联合查询
数据库·mysql
careybobo3 小时前
海康摄像头通过Web插件进行预览播放和控制
前端
TDengine (老段)3 小时前
TDengine 中的关联查询
大数据·javascript·网络·物联网·时序数据库·tdengine·iotdb
杉之4 小时前
常见前端GET请求以及对应的Spring后端接收接口写法
java·前端·后端·spring·vue
喝拿铁写前端4 小时前
字段聚类,到底有什么用?——从系统混乱到结构认知的第一步
前端
morris1314 小时前
【redis】redis实现分布式锁
数据库·redis·缓存·分布式锁
再学一点就睡4 小时前
大文件上传之切片上传以及开发全流程之前端篇
前端·javascript