• 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)

    1. var a = 1;
    2. console.log(a)
    3. let a = 6;
    • A. undefined

    • B. 6

    • C. 运行错误

    • D. 1

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

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

    1. var a = 1;
    2. console.log(a)
    3. 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
    1.  typeof null        //object
    2.  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.

    1. select site_name
    2. from site
    3. where id in(
    4. select site_id
    5. from visit
    6. group by site_id
    7. order by count(distinct user_id) desc
    8. limit 3;
    9. )

    2.

    1. select site_name
    2. from site
    3. where id in(
    4. select site_name
    5. from visit
    6. group by site_id
    7. order by count(user_id) desc
    8. limit 3;
    9. )
  • 相关阅读:
    建筑施工员证怎么考?报名条件及报考时间是什么?
    力扣刷题日志-Day2 (力扣151、43、14)
    axios的delete操作你踩过坑吗?
    终极 C++避坑指南
    餐饮行业小程序开发|如何解决餐饮店遇到的难题?
    鸿蒙开发游戏(二)---大鱼吃小鱼(摇杆控制)
    Unity16 UI
    Java 生成随机码工具类 线程安全 两种方式
    Day05-docker-compose与私有仓库
    【Qt炫酷动画】1.easing官方demo详细剖析
  • 原文地址:https://blog.csdn.net/qq_62767608/article/details/126085131