A. 正确
B. 错误
【答案】B
A. 程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的
B. 虚拟机栈描述的是Java方法执行的内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
C. 方法区用于存储JVM加载的类信息、常量、静态变量、以及编译器编译后的代码等数据,是线程隔离的
D. 原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的
【答案】C
A. JDBC提供了Statement、PreparedStatement 和 CallableStatement三种方式来执行查询语句,其中 Statement 用于通用查询, PreparedStatement 用于执行参数化查询,而 CallableStatement则是用于存储过程
B. 对于PreparedStatement来说,数据库可以使用已经编译过及定义好的执行计划,由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象”
C. PreparedStatement中,“?” 叫做占位符,一个占位符可以有一个或者多个值
D. PreparedStatement可以阻止常见的SQL注入式攻击
【答案】C
A. 堆排序
B. 插入排序
C. 快速排序
D. 直接选择排序
【答案】B
A. 找最大最小值
B. 计算平均值
C. 找中位数
D. 找出现次数最多的值
【答案】C
A. 直接插入排序
B. 冒泡排序
C. 基数排序
D. 快速排序
【答案】C
A. 正确
B. 错误
【答案】B
A. lgn+1
B. lgn-1
C. lgn
D. lg(n+1)
【答案】D
A. PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行
B. PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就抛出异常
C. PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起
D. PROPAGATION_NESTED:支持当前事务,新增Savepoint点,与当前事务同步提交或回滚
【答案】B
A. servlet处于服务器进程中,它通过多线程方式运行其service方法
B. CGI对每个请求都产生新的进程,服务完成后就销毁
C. servlet在易用性上强于cgi,它提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等
D. cgi在移植性上高于servlet,几乎所有的主流服务器都直接或通过插件支持cgi
【答案】D
对一棵空的字典树依次插入如下单词后,字典树中节点个数为()。
① aba
② abb
③ abc
④ bac
⑤ bad
⑥ bdc
A. 11
B. 12
C. 15
D. 16
【答案】B
【解析】最终的字典树如下所示
下列关于字典树的叙述中,正确的是()。
① 字典树又称trie树,1981年ACM协会对此数据结构命名以纪念计算机科学先驱Bananaoa Trie
② 向字典树中插入一个长度为n的字符串的时间复杂度为O(n)
③ 字典树本质上是一个确定有限状态自动机(DFA)
A. 仅②
B. 仅 ①、②
C. 仅 ②、③
D. 仅 ①、③
【答案】C
【解析】字典树又称trie,这个术语来自于retrieval。trie的发明者是Edward Fredkin。字典树插入与查找的效率都取决于字符串长度,字典树本质上是一个确定有限状态自动机(DFA)。
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。
下列哪些问题是字典树无法直接解决的()。
① 统计n个字符串中所有前缀出现的次数
② 统计n个单词中每个单词出现的次数
③ 批量删除以某个单词为前缀的所有单词
④ 集合操作:插入、删除字符串,以及查询某字符串是否在集合中
A. 仅①
B. 仅②
C. 仅③、④
D. 字典树全部都可以解决
【答案】D
【解析】字典树是一棵前缀树,上述功能字典树都可以解决。
往一棵初始为空的字典树中依次插入如下六个字符串,且设根节点是第一个创建的节点,则字符’e’对应的节点是第几个创建的()。
① AC
② ASCII
③ BANANA
④ BAND
⑤ ACE
⑥ BAAQ
A. 3
B. 8
C. 15
D. 17
【答案】C
A. 不管是post还是get方法提交过来的连接,都会在service中处理
B. doGet/doPost 则是在 javax.servlet.GenericServlet 中实现的
C. service()是在javax.servlet.Servlet接口中定义的
D. service判断请求类型,决定是调用doGet还是doPost方法
【答案】B
A. 在创建自己的Servlet时候,应该在初始化方法init()方法中创建Servlet实例
B. 在Servlet生命周期的服务阶段,执行service()方法,根据用户请求的方法,执行相应的doGet()或是doPost()方法
C. 在销毁阶段,执行destroy()方法后会释放Servlet 占用的资源
D. destroy()方法仅执行一次,即在服务器停止且卸载Servlet时执行该方法
【答案】A
下列关于哈夫曼编码特性的叙述中,正确的是()。
I. 在计算机资料处理中,哈夫曼编码使用定长编码表对源符号(如文件中的一个字母)进行编码
II. 使用哈夫曼编码对一片英文进行压缩时,出现概率越大的单词对应的编码长度越长
III. 使用哈夫曼编码对一片英文进行压缩时,出现概率越大的单词对应的编码长度越短
A. 只有II
B. 只有III
C. I和II
D. I和III
【答案】B
【解析】哈夫曼编码使用变长编码表对源符号进行编码,源符号出现的概率越高,其对应的哈夫曼编码越短。
下列关于哈夫曼编码的叙述中,正确的是()。
① 哈夫曼编码是一种用于无损数据压缩的权编码算法
② 哈夫曼编码使用一种哈夫曼树的数据结构实现
③ 哈夫曼编码需要提前计算或预估所有需要加密的源符号出现的概率
A. 仅①
B. 仅①、②
C. 仅②、③
D. ①、②、③
【答案】D
【解析】哈夫曼编码是一种用于无损数据压缩的权编码算法,使用哈夫曼树实现,需要提前计算或预估所有需要加密的源符号出现的概率。
对字符串 “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也是错误的。
A. 23
B. 25
C. 27
D. 29
【答案】B
【解析】一种合法的哈夫曼编码方式为:
占用的比特数为:5×1+3×2+2×3+1×4+1×4=25 bit。
A. 16
B. 18
C. 19
D. 20
【答案】A
【解析】一种合法的哈夫曼编码方式为:
占用的比特数为:2×2+2×2+1×3+1×2+1×3=16 bit。
A. init()方法是servlet生命的起点。一旦加载了某个servlet,服务器将立即调用它的init()方法
B. service()方法处理客户机发出的所有请求
C. destroy()方法标志servlet生命周期的结束
D. servlet在多线程下使用了同步机制,因此,在并发编程下servlet是线程安全的
【答案】D
A. Swing是AWT的子类
B. AWT在不同操作系统中显示相同的风格
C. AWT不支持事件类型,Swing支持事件模型
D. Swing在不同的操作系统中显示相同的风格
【答案】D
下列关于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算法的主要思想是提前判断如何重新开始查找,而这种判断只取决于模式字符串本身;求解失配函数的时间复杂度是线性的。
A. 6
B. 9
C. 13
D. 23
【答案】B
【解析】首先主串与模式串比较了7个字符,比较到第7个字符处发现不匹配,找到主串中位于模式串后面的第一个字符,即红色箭头所指的 “空格”,再在模式串中从后往前找 “空格”,没有找到,则直接把模式串移到 “空格” 的后面。
主串的第9个字符’A’与模式串的第一个字符’K’不匹配,继续找到主串中位于模式串后面的第一个字符,即红色箭头所指的主串中的第二个 “空格”,再在模式串中从后往前找 “空格”,没有找到,则直接把模式串移到第二个 “空格” 的后面。
继续匹配与转移,发现已经到了主串的末尾,匹配完毕。一共比较了7+1+1=9次。
A. O(logn)
B. O(n)
C. O(n·logn)
D. O(n2)
【答案】B
【解析】trie树处理长度为n的字符串的时间复杂度为O(n)。
A. 18
B. 21
C. 24
D. 27
【答案】B
【解析】最终的trie树结构如下,共21个节点。
A. 15
B. 18
C. 19
D. 21
【答案】C
【解析】一种合法的哈夫曼编码方式为:
占用的比特数为:4×1+3×2+2×3+1×3 = 19 bit。
A. jinfo
B. jmap
C. jhat
D. jstat
【答案】B
【解析】jps:查看本机java进程信息;jstack:打印线程的栈信息,制作线程dump文件;jmap:打印内存映射,制作堆dump文件;jstat:性能监控工具;jhat:内存分析工具;jconsole:简易的可视化控制;jvisualvm:功能强大的控制台。
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{}中代码必执行。