牛客错题集3,前端开发结构

在Thread中有一个成员变量ThreadLocals,该变量的类型是ThreadLocalMap,也就是一个Map,它的键是threadLocal,值为就是变量的副本。通过ThreadLocal的get()方法可以获取该线程变量的本地副本,在get方法之前要先set,否则就要重写initialValue()方法。  
ThreadLocal的使用场景:  
数据库连接:在多线程中,如果使用懒汉式的单例模式创建Connection对象,由于该对象是共享的,那么必须要使用同步方法保证线程安全,这样当一个线程在连接数据库时,那么另外一个线程只能等待。这样就造成性能降低。如果改为哪里要连接数据库就来进行连接,那么就会频繁的对数据库进行连接,性能还是不高。这时使用ThreadLocal就可以既可以保证线程安全又可以让性能不会太低。但是ThreadLocal的缺点时占用了较多的空间。

36.判断一块内存空间是否符合垃圾收集器收集的标准有哪些?

==========================================================================================

A.给对象赋予了空值null,以下再没有调用过
B.对象重新分配了内存空间
C.给对象赋予了空值null
D.给对象赋予了新值
答案:B
解析:

在java语言中,判断一块内存空间是否符合垃圾收集器收集标准的标准只有两个:

1.给对象赋值为null,以下没有调用过。

2.给对象赋了新的值,重新分配了内存空间。

37. 父类,子类的方法以及静态代码块执行的顺序

======================================================================================

执行顺序为

  • 1.父类静态代码块、静态变量 ps:按声明顺序执行
  • 2.子类静态代码块、静态变量 ps:按声明顺序执行
  • 3.父类局部代码块、成员变量 ps:按声明顺序执行
  • 4.父类构造函数
  • 5.子类局部代码块、成员变量 ps:按声明顺序执行
  • 6.子类构造函数

38.

================================================================

Integer a = 1;

Integer b = 1;

Integer c = 500;

Integer d = 500;

System.out.print(a == b);

System.out.print(c == d);

A.true、true
B.true、false
C.false、true
D.false、false
答案:B
解析:

Integer a = 1;是自动装箱会调用Interger.valueOf(int)方法;该方法注释如下:

This method will always *** values in the range -128 to > 127 inclusive, and may *** other values outside of this range.

也就是说IntegerCache类缓存了-128到127的Integer实例,在这个区间内调用valueOf不会创建新的实例。

39.访问权限控制从最大权限到最小权限依次为:public、 包访问权限、protected和private 。( )

========================================================================================================================

A.正确
B.错误
答案:B
解析:

在这里插入图片描述

40.()运算符把其操作数中所有值为0和所有值为1的位分别在结果的相应中设置1和0

======================================================================================================

A.&
B.|
C.!
D.~
答案:D
解析:

~是位运算符,意义是 按位非(NOT)

按位非也叫做补,一元运算符NOT“~”是对其运算数的每一位取反。

仅用于整数值

反转位,即0位变为1位,1变成0

在所有情况下〜x等于(-x)- 1

例如:

~ 0111 (7) = 1000 (8)

41.在java中重写方法应遵循规则的包括()

====================================================================================

A.访问修饰符的限制一定要大于被重写方法的访问修饰符
B.可以有不同的访问修饰符
C.参数列表必须完全与被重写的方法相同
D.必须具有不同的参数列表
答案:B C
解析:

方法的重写(override)两同两小一大原则:

方法名相同,参数类型相同

子类返回类型小于等于父类方法返回类型,

子类抛出异常小于等于父类方法抛出异常,

子类访问权限大于等于父类方法访问权限。

42.Java创建对象的方式

===========================================================================

Java有5种方式来创建对象:

  • 1.使用 new 关键字(最常用)

ObjectName obj = new ObjectName();

  • 2.使用反射的Class类的newInstance()方法

ObjectName obj = ObjectName.class.newInstance();

  • 3.使用反射的Constructor类的newInstance()方法

ObjectName obj = ObjectName.class.getConstructor.newInstance();

  • 4.使用对象克隆clone()方法:

ObjectName obj = obj.clone();

  • 5.使用反序列化(ObjectInputStream)的readObject()方法:

try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILE_NAME))) { ObjectName obj = ois.readObject(); }

43.下列哪些操作会使线程释放锁资源?

================================================================================

A.sleep()
B.wait()
C.join()
D.yield()
答案:B C
解析:
  • 1.sleep()方法

在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”。不推荐使用。

sleep()使当前线程进入阻塞状态,在指定时间内不会执行。

  • 2.wait()方法

在其他线程调用对象的notify或notifyAll方法前,导致当前线程等待。线程会释放掉它所占有的“锁标志”,从而使别的线程有机会抢占该锁。

当前线程必须拥有当前对象锁。如果当前线程不是此锁的拥有者,会抛出IllegalMonitorStateException异常。

唤醒当前对象锁的等待线程使用notify或notifyAll方法,也必须拥有相同的对象锁,否则也会抛出IllegalMonitorStateException异常。

waite()和notify()必须在synchronized函数或synchronized block中进行调用。如果在non-synchronized函数或non-synchronized block中进行调用,虽然能编译通过,但在运行时会发生IllegalMonitorStateException的异常。

  • 3.yield方法

暂停当前正在执行的线程对象。

yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行。

yield()只能使同优先级或更高优先级的线程有执行的机会。

  • 4.join方法

join()等待该线程终止。

等待调用join方法的线程结束,再继续执行。如:t.join();//主要用于等待t线程运行结束,若无此句,main则会执行完毕,导致结果不可预测

44.以下程序运行的结果为 ( )

==============================================================================

public class Example extends Thread{

@Override

public void run(){

try {

Thread.sleep(1000);

} catch (InterruptedException e){

e.printStackTrace();

}

System. out .print( “run” );

}

public static void main(String[] args){

Example example= new Example();

example.run();

System. out .print( “main” );

}

}

A.run main
B.main run
C.main
D.run

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

资料过多,篇幅有限,需要文中全部资料可以点击这里免费获取前端面试资料PDF完整版!

自古成功在尝试。不尝试永远都不会成功。勇敢的尝试是成功的一半。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

[外链图片转存中…(img-6R9GV8xw-1712377490201)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

[外链图片转存中…(img-hTkVIkYb-1712377490201)]

[外链图片转存中…(img-EZLJ0GaA-1712377490201)]

资料过多,篇幅有限,需要文中全部资料可以点击这里免费获取前端面试资料PDF完整版!

自古成功在尝试。不尝试永远都不会成功。勇敢的尝试是成功的一半。

  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值