Java基础错题集(七)

注意:线程是 系统调度和分派的基本单位

进程是资源分配的基本单位

1. (单选题,5.0分)分析下列代码,运行main方法后,会打印什么内容?(A)

  • A.Thread-0

        Thread-1

  • B. 每行会打印Thread-0或Thread-1,但是不是交替出现的,而是无规律

  • C. Thread-0

         Thread-1

         Thread-0

         Thread-1

  • D. Thread-0

解析:该程序发生了死锁,两个人互相占着对方的锁资源。

2. (单选题,5.0分)以下JS程序段的运行结果为:(C)

var a = 1;

console.log(a)

let a = 6;
  • A. undefined

  • B. 6

  • C. 运行错误

  • D. 1

解析:var 声明的范围是函数作用域,let 和 const 声明的范围是块作用域 var 声明的变量会被提升到函数作用域的顶部,let 和 const 声明的变量不存在提升,且具有暂时性死区特征 var 允许在同一个作用域中重复声明同一个变量,let 和 const 不允许

3. (单选题,5.0分)运行以下JavaScript程序段的结果为:(D)

var a = 1;

console.log(a)

var a = 6;

  • A. undefind

  • B. 6

  • C. 运行错误

  • D. 1

解析:重复用var定义相同的变量只是相当于一次赋值操作,不会覆盖到前面去,执行结果还是会按照上下文顺序来

4. (单选题,5.0分)(哔哩哔哩2021校园招聘后端开发方向笔试卷A)下列正则表达式不能完全匹配字符串aabbb的是(C)

  • A.[a-z]*

  • B.a{2}b{3}

  • C.a+b?

  • D.a+b+c*

解析:

字符?指定一个字符、字符组或其他基本单元可选,这意味着正则表达式引擎将会期望该字符出现零次或一次。

使用 + 匹配1个到无数个,使用 *代表0个到无数个。即:+等价于{1,},*等价于{0,}

5. (单选题,5.0分)判断以下程序的运行结果(D)

console.log(null == undefined)

  • A. 运行错误

  • B. undefined

  • C. false

  • D. true

解析:Javascript规范中提到, 要比较相等性之前,不能将 null 和 undefined 转换成其他任何值,并且规定null 和 undefined 是相等的。null 和 undefined都代表着无效的值。

全等于状态下,是false,这个很好理解了。它们不属于同一数据类型。

console.log( undefined === null )  //false
 typeof null        //object
 typeof undefined       //undefined

6. (单选题,5.0分)以下JS程序段的运行结果为(B)

typeof null

  • A. number

  • B. object

  • C. NULL

  • D. string

解析:为什么typeof null结果为object呢,这个官方给出了解释:

7.下图是一种名为跳表(skiplist)的数据结构,它允许快速查询,插入和删除一个有序连续元素的数据链表,其平均查找和插入时间复杂度都是O(logn)。

快速查询是通过维护一个多层次的链表,每一层的首尾是假结点,除头尾节点外每层的数据都是有序的,最底层即Level1存放的是所有数据,而上面的每一层都可认为是通过某种算法建立起来的索引,且当数据量够大时可以认为第N层结点是第N-1的一半。一开始,算法在最稀疏的层次(即最顶层)进行搜索,直至需要查找的元素在该层两个相邻的元素中间。这时,算法将跳转到下一个层次,重复刚才的搜索,直到找到需要查找的元素为止。

算法以Top指向的最顶层的假头结点为入口,试依次写出查找85经过的结点的值(以-1开头,85结尾)

格式如下(假定过程为-1->1->2->4) [-1,1,2,4]

 [-1,21,37,37,71,71,85]

解析:其中37->37,71->71是因为查找的元素在该层两个相邻的元素中间。此时,算法将跳转到下一个层次

8. (多选题,5.0分)以下关于get 和 post 请求的区别,正确的有哪些?(ABC)

  • A. get 请求会被浏览器主动缓存,而 post 不会。

  • B. post 参数传输更安全,get 的参数会明文限制在 url 上,post 不会。

  • C.get 传递参数有大小限制,而 post 没有。

解析:get 请求会被浏览器主动缓存,而 post 不会。

9. (多选题,5.0分)(京东2019春招京东算法类试卷 )用俩个栈模拟实现一个队列,如果栈的容量分别是O和P(O>P),那么模拟实现的队列最大容量是多少?(C)

  • A.2O+1

  • B.2O-1

  • C.2P+1

  • D.O+P

解析:用容量为m(较大的)的栈作为存储空间,容量为n的栈作为输出缓冲区,先将入队的前n个元素push进存储空间栈

随后对存储空间栈中的每个元素进行出栈(pop)操作,继而压入(push)输出缓冲区栈

对于剩余入队的前n+1个元素,将他们压入存储空间栈

此时已经入队了2n+1个元素,若此时进行出队操作,先将输出缓冲区栈中的元素出栈(pop)并输出:Q1,Q2,......,Qn,再对存储空间栈中的n个元素进行出栈(pop)并压入输入缓冲区栈

然后对存储空间栈进行一次出栈(pop)操作并输出:Qn+1,最后再对输出缓冲区栈中的所有元素进行出栈(pop)操作并输出Qn+2,Qn+3,......,Q2n,Q2n+1。这样两个栈总的输出序列为:Q1,Q2,......,Qn,Qn+1,Qn+2,Qn+3,......,Q2n,Q2n+1

10.关于并发,哪些说法是正确的(ABD)

  • A. "可见性"的意思是当一个线程修改共享变量时,另外一个线程能读到这个修改的值。

  • B. Java中所有使用的并发机制依赖于JVM的实现和CPU的指令

  • C. synchronized是一个轻量级的锁

  • D. 如果volatile变量修饰符使用恰当的话,他比synchronized的使用和执行成本更低。

解析:synchronized这个关键字,原来的印象就是一个重量级锁,也就是悲观锁,直接锁住代码段,剩余的线程进入到阻塞队列中,效率极低,实际上呢,在jdk1.6之后,synchronized的内部进行了优化,它不再是一个简单的重量级锁,它为了试用所有的情况,有了一个锁升级流程:

无锁 -> 偏向锁  -> 轻量级锁 -> 重量级锁

11. (填空题,5.0分)设树T的度为4,其中度为1、2、3和4的结点个数分别为4、1、1、1,则树T中叶子结点个数为 (7

解析:

度:

在无向图中,每个节点连边的条数就是该节点的度数。  

而在有向图中,指向该节点的边数称为入度;反之,则称为出度。某点度的大小等于出入度之和。

在树中,节点的度是指一个节点含有的子树的个数,也就是:在树中,结点有几个分叉,度就是几。

叶节点或终端节点:度为0的节点称为叶节点;

非终端节点或分支节点:度不为0的节点;

树的度:一棵树中,最大的节点的度称为树的度;

公式:

①二叉树中叶子结点总是比度为2的结点多一个,

故总结点=叶子节点数+度为1的节点数+度为2的节点数

②N个结点的树有N-1条边。还有另一种表述方式:

树中结点数 = 总分叉数 +1。(这里的分叉数就是所有结点的度之和),本质上其实是一样的

此题未告知是二叉树,可用公式②,此处我用公式②演算:

非叶结点的个数:4+1+1+1=7
此树的边的条数:1×4+2×1+3×1+4×1=13
设叶结点个数:x
则等式:7+x-1=13
得x=7
所以有7个叶结点

12.用户表user{id:用户编号,name:用户名}

网站表site{id:网站编号,site_name:网站名}

访问记录表visit{user_id:访问者编号,site_id:网站编号,visit_time:访问时间}

1、查询出访客数前三的网站名(一个人多次访问同一网站也只算一个访客)

2、查询出被访问次数前三的网站名

 1.

select site_name
from site
where id in(
select site_id
from visit
group by site_id
order by count(distinct user_id) desc
limit 3;
)

2.

select site_name
from site
where id in(
select site_name
from visit
group by site_id
order by count(user_id) desc
limit 3;
)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值