数据结构与算法——每日一练(10月)
文章目录每日一练10.110.210.310.410.510.610.710.810.9每日一练10.1判断下列说法是否正确:内部排序方法的稳定性是指该排序算法不允许有相同的关键字记录。A. 正确B. 错误【答案】B10.2下面有关JVM内存,说法错误的是?A. 程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的B. 虚拟机栈描述的是Java方法执行的内存
文章目录
每日一练
10.1
- 判断下列说法是否正确:内部排序方法的稳定性是指该排序算法不允许有相同的关键字记录。
A. 正确
B. 错误
【答案】B
10.2
- 下面有关JVM内存,说法错误的是?
A. 程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的
B. 虚拟机栈描述的是Java方法执行的内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
C. 方法区用于存储JVM加载的类信息、常量、静态变量、以及编译器编译后的代码等数据,是线程隔离的
D. 原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的
【答案】C
10.3
- 下面有关jdbc statement的说法错误的是?
A. JDBC提供了Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程
B. 对于PreparedStatement来说,数据库可以使用已经编译过及定义好的执行计划,由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象”
C. PreparedStatement中,“?” 叫做占位符,一个占位符可以有一个或者多个值
D. PreparedStatement可以阻止常见的SQL注入式攻击
【答案】C
10.4
- 已知数据表A中每个元素距其最终位置不远,为节省时间排序,应采用什么方法排序?
A. 堆排序
B. 插入排序
C. 快速排序
D. 直接选择排序
【答案】B
10.5
- 以下哪种操作最适合先进行排序处理?
A. 找最大最小值
B. 计算平均值
C. 找中位数
D. 找出现次数最多的值
【答案】C
10.6
- 下列排序算法中,元素的移动次数与关键字的初始排列次序无关的是 。
A. 直接插入排序
B. 冒泡排序
C. 基数排序
D. 快速排序
【答案】C
10.7
- 判断下列说法是否正确:二叉排序树上结点的关键字的值有可能相同。()
A. 正确
B. 错误
【答案】B
10.8
- 设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过()。
A. lgn+1
B. lgn-1
C. lgn
D. lg(n+1)
【答案】D
10.9
- 下面有关SPRING的事务传播特性,说法错误的是?
A. PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行
B. PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就抛出异常
C. PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起
D. PROPAGATION_NESTED:支持当前事务,新增Savepoint点,与当前事务同步提交或回滚
【答案】B
10.10
- 下面有关servlet和cgi的描述,说法错误的是?
A. servlet处于服务器进程中,它通过多线程方式运行其service方法
B. CGI对每个请求都产生新的进程,服务完成后就销毁
C. servlet在易用性上强于cgi,它提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等
D. cgi在移植性上高于servlet,几乎所有的主流服务器都直接或通过插件支持cgi
【答案】D
10.11
-
对一棵空的字典树依次插入如下单词后,字典树中节点个数为()。
① aba
② abb
③ abc
④ bac
⑤ bad
⑥ bdc
A. 11
B. 12
C. 15
D. 16
【答案】B
【解析】最终的字典树如下所示
10.12
-
下列关于字典树的叙述中,正确的是()。
① 字典树又称trie树,1981年ACM协会对此数据结构命名以纪念计算机科学先驱Bananaoa Trie
② 向字典树中插入一个长度为n的字符串的时间复杂度为O(n)
③ 字典树本质上是一个确定有限状态自动机(DFA)
A. 仅②
B. 仅 ①、②
C. 仅 ②、③
D. 仅 ①、③
【答案】C
【解析】字典树又称trie,这个术语来自于retrieval。trie的发明者是Edward Fredkin。字典树插入与查找的效率都取决于字符串长度,字典树本质上是一个确定有限状态自动机(DFA)。
10.13
- 对一个存放比特串(串中只包含0或1)的字典树进行m次插入操作,每次插入操作会往字典树中插入一个长度为n的比特串,其算法空间复杂度是()。
A. O(n·m)
B. O(n·2^m)
C. O(min(n·2m, m·2n))
D. O(min(n·m,2n))
【答案】D
【解析】当m远小于2n时,空间复杂度接近于n·m;当m接近或者超过2n时,此字典树深度为i的节点最多有2i个(设根节点深度为0),于是字典树中最多有20+21+…+2n=2n+1-1。
10.14
-
下列哪些问题是字典树无法直接解决的()。
① 统计n个字符串中所有前缀出现的次数
② 统计n个单词中每个单词出现的次数
③ 批量删除以某个单词为前缀的所有单词
④ 集合操作:插入、删除字符串,以及查询某字符串是否在集合中
A. 仅①
B. 仅②
C. 仅③、④
D. 字典树全部都可以解决
【答案】D
【解析】字典树是一棵前缀树,上述功能字典树都可以解决。
10.15
-
往一棵初始为空的字典树中依次插入如下六个字符串,且设根节点是第一个创建的节点,则字符’e’对应的节点是第几个创建的()。
① AC
② ASCII
③ BANANA
④ BAND
⑤ ACE
⑥ BAAQ
A. 3
B. 8
C. 15
D. 17
【答案】C
【解析】字典树中每个节点的创建次序如下所示
10.16
- 下面有关servlet service描述错误的是?
A. 不管是post还是get方法提交过来的连接,都会在service中处理
B. doGet/doPost 则是在 javax.servlet.GenericServlet 中实现的
C. service()是在javax.servlet.Servlet接口中定义的
D. service判断请求类型,决定是调用doGet还是doPost方法
【答案】B
10.17
- 下列有关Servlet的生命周期,说法不正确的是?
A. 在创建自己的Servlet时候,应该在初始化方法init()方法中创建Servlet实例
B. 在Servlet生命周期的服务阶段,执行service()方法,根据用户请求的方法,执行相应的doGet()或是doPost()方法
C. 在销毁阶段,执行destroy()方法后会释放Servlet 占用的资源
D. destroy()方法仅执行一次,即在服务器停止且卸载Servlet时执行该方法
【答案】A
10.18
-
下列关于哈夫曼编码特性的叙述中,正确的是()。
I. 在计算机资料处理中,哈夫曼编码使用定长编码表对源符号(如文件中的一个字母)进行编码
II. 使用哈夫曼编码对一片英文进行压缩时,出现概率越大的单词对应的编码长度越长
III. 使用哈夫曼编码对一片英文进行压缩时,出现概率越大的单词对应的编码长度越短
A. 只有II
B. 只有III
C. I和II
D. I和III
【答案】B
【解析】哈夫曼编码使用变长编码表对源符号进行编码,源符号出现的概率越高,其对应的哈夫曼编码越短。
10.19
-
下列关于哈夫曼编码的叙述中,正确的是()。
① 哈夫曼编码是一种用于无损数据压缩的权编码算法
② 哈夫曼编码使用一种哈夫曼树的数据结构实现
③ 哈夫曼编码需要提前计算或预估所有需要加密的源符号出现的概率
A. 仅①
B. 仅①、②
C. 仅②、③
D. ①、②、③
【答案】D
【解析】哈夫曼编码是一种用于无损数据压缩的权编码算法,使用哈夫曼树实现,需要提前计算或预估所有需要加密的源符号出现的概率。
10.20
-
对字符串 “ABABABCACBABCAABACBA” 进行哈夫曼编码,则以下哪个策略是正确的()。
I. ‘A’编码为’0’,‘B’编码为’10’,'C’编码为’11’
II. ‘A’编码为’0’,‘B’编码为’1’,'C’编码为’10’
III. ‘A’编码为’10’,‘B’编码为’11’,'C’编码为’0’
A. 只有I
B. 只有II
C. 只有III
D. II和III
【答案】A
【解析】方法I正确。
方法II是无法还原出原文的,比如,当存在编码片段为 ‘10’ 时,无法确定其对应原文是 ‘BA’ 还是 ‘C’。
方法III对应的编码长度明显大于方法I,所以III也是错误的。
10.21
- 对字符串 “KAIKEBAAABAB” 进行哈夫曼编码,则编码后的字符串(不计入编码规则相关信息,仅考虑每个字符对应的编码占用的字节数)占用多少比特?()
A. 23
B. 25
C. 27
D. 29
【答案】B
【解析】一种合法的哈夫曼编码方式为:
- ‘A’:出现 5 次,编码为 ‘0’
- ‘B’:出现 3 次,编码为 ‘10’
- ‘K’:出现 2 次,编码为 ‘111’
- ‘I’:出现 1 次,编码为 ‘1100’
- ‘E’:出现 1 次,编码为 ‘1101’
占用的比特数为:5×1+3×2+2×3+1×4+1×4=25 bit。
10.22
- 对字符串 “KAIKEBA” 进行哈夫曼编码,则编码后的字符串(不计入编码规则相关信息,仅考虑每个字符对应的编码占用的字节数)占用多少比特?()
A. 16
B. 18
C. 19
D. 20
【答案】A
【解析】一种合法的哈夫曼编码方式为:
- ‘K’:出现 2 次,编码为 ‘11’
- ‘A’:出现 2 次,编码为 ‘10’
- ‘I’:出现 1 次,编码为 ‘010’
- ‘E’:出现 1 次,编码为 ‘00’
- ‘B’:出现 1 次,编码为 ‘011’
占用的比特数为:2×2+2×2+1×3+1×2+1×3=16 bit。
10.23
- 下面有关servlet中init,service,destroy方法描述错误的是?
A. init()方法是servlet生命的起点。一旦加载了某个servlet,服务器将立即调用它的init()方法
B. service()方法处理客户机发出的所有请求
C. destroy()方法标志servlet生命周期的结束
D. servlet在多线程下使用了同步机制,因此,在并发编程下servlet是线程安全的
【答案】D
10.24
- 关于AWT和Swing说法正确的是?
A. Swing是AWT的子类
B. AWT在不同操作系统中显示相同的风格
C. AWT不支持事件类型,Swing支持事件模型
D. Swing在不同的操作系统中显示相同的风格
【答案】D
10.25
-
下列关于KMP算法的叙述中,正确的是( )。
I. KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出
II. KMP算法的主要思想是提前判断如何重新开始查找,而这种判断只取决于模式字符串本身
III. 对长度为N的模式串求解其部分匹配表(又称失配/next函数)的时间复杂度为O(N)
A. 只有I
B. I和II
C. I和III
D. I、II和III
【答案】D
【解析】KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出;KMP算法的主要思想是提前判断如何重新开始查找,而这种判断只取决于模式字符串本身;求解失配函数的时间复杂度是线性的。
10.26
- 假定主串为 “KAIKEBA AIKEBAK IKEBAKA”,模式串为 “KAIKEBO”,则使用Sunday算法进行字符串匹配时,主串与模式串一共比较了( )次。
A. 6
B. 9
C. 13
D. 23
【答案】B
【解析】首先主串与模式串比较了7个字符,比较到第7个字符处发现不匹配,找到主串中位于模式串后面的第一个字符,即红色箭头所指的 “空格”,再在模式串中从后往前找 “空格”,没有找到,则直接把模式串移到 “空格” 的后面。
主串的第9个字符’A’与模式串的第一个字符’K’不匹配,继续找到主串中位于模式串后面的第一个字符,即红色箭头所指的主串中的第二个 “空格”,再在模式串中从后往前找 “空格”,没有找到,则直接把模式串移到第二个 “空格” 的后面。
继续匹配与转移,发现已经到了主串的末尾,匹配完毕。一共比较了7+1+1=9次。
10.27
- 在一棵trie树中查询一个长度为n的字符串的出现次数,时间复杂度为( )。
A. O(logn)
B. O(n)
C. O(n·logn)
D. O(n2)
【答案】B
【解析】trie树处理长度为n的字符串的时间复杂度为O(n)。
10.28
- 往一棵初始为空的trie树中依次插入 “abc”, “apple”, “abcd”, “kaikai”, “kaixin”, “kaikeba” 后树中节点个数为( )。
A. 18
B. 21
C. 24
D. 27
【答案】B
【解析】最终的trie树结构如下,共21个节点。
10.29
- 对字符串 “KAIKAIKEAK” 进行哈夫曼编码,则编码后的字符串(不计入编码规则相关信息,仅考虑每个字符对应的编码占用的字节数)占用多少比特?()。
A. 15
B. 18
C. 19
D. 21
【答案】C
【解析】一种合法的哈夫曼编码方式为:
- ‘K’:出现 4 次,编码为 ‘0’
- ‘A’:出现 3 次,编码为 ‘11’
- ‘I’:出现 2 次,编码为 ‘100’
- ‘E’:出现 1 次,编码为 ‘101’
占用的比特数为:4×1+3×2+2×3+1×3 = 19 bit。
10.30
- 运用下列哪个命令能够获取JVM的内存映像
A. jinfo
B. jmap
C. jhat
D. jstat
【答案】B
【解析】jps:查看本机java进程信息;jstack:打印线程的栈信息,制作线程dump文件;jmap:打印内存映射,制作堆dump文件;jstat:性能监控工具;jhat:内存分析工具;jconsole:简易的可视化控制;jvisualvm:功能强大的控制台。
10.31
- AccessViolationException异常触发后,下列程序的输出结果为( )
static void main(String[] args) {
try {
throw new AccessViolationException();
Console.writeLine("error1");
} catch (Exception e) {
Console.writeLine("error2");
}
Console.writeLine("error3");
}
A. error2 error3
B. error3
C. error2
D. error1
【答案】A
【解析】① 若catch(){}块中,如果有throw 语句,则 try{}catch(){} finally{}块之外的代码不执行;否则,执行。 ② try{}中有异常,则异常下面代码不执行。 ③ finally{}中代码必执行。
更多推荐
所有评论(0)