码上未来IT培训老师直接接听

400-029-09** 400-029-0997 转 36015
查看完整号码
扫码拨号
微信扫码拨号

关于Java的相关的面试题(二十四)

作者:码上未来CodingFuture 来源:码上未来CodingFuture 2023/3/10 17:47:17

程序员面试干货来啦,今天小编就先为大家整理出4道大厂面试时常...

程序员面试干货来啦,今天小编就先为大家整理出4道大厂面试时常见关于Java 的面试题。看看你能答对几道题呢!多多掌握此类面试题,就会增加面试通过的机率哦,后续还有其他类的面试题,请持续关注哟!
241. ⽆锁化编程有哪些常⻅⽅法?() A. 针对计数器,可以使⽤原⼦加 B. 只有⼀个⽣产者和⼀个消费者,那么就可以做到免锁访问环形缓冲区( Ring Buffer ) C. RCU ( Read-Copy-Update ),新旧副本切换机制,对于旧副本可以采⽤延迟释放的做法 D. CAS ( Compare-and-Swap ),如⽆锁栈,⽆锁队列等待 答案: D 分析: A 这⽅法虽然不太好,但是常⻅ B ProducerConsumerQueue 就是这个,到处都是 C linux kernel ⾥⾯⼤量使⽤ D 本质上其实就是乐观锁,操作起来很困难。。单⽣产者多消费者或者多⽣产者单消费者的情况下⽐较常⻅,也 不容易遇到 ABA 问题。 242.sleep() 和 yield() 有什么区别 答: ① sleep() ⽅法给其他线程运⾏机会时不考虑线程的优先级,因此会给低优先级的线程以运⾏的机会; yield() ⽅法只会给相同优先级或更⾼优先级的线程以 运⾏的机会; ② 线程执⾏ sleep() ⽅法后转⼊阻塞( blocked )状态,⽽执⾏ yield() ⽅法后转⼊就绪( ready )状态; ③ sleep() ⽅法声明抛出 InterruptedException ,⽽ yield() ⽅法没有声明任何异常; ④ sleep() ⽅法⽐ yield() ⽅法(跟操作系统相关)具有更好的可移植性。 243. 当⼀个线程进⼊⼀个对象的 synchronized ⽅法 A 之后,其它线程是否可进⼊此对象的 synchronized ⽅法? 答: 不能。 其它线程只能访问该对象的⾮同步⽅法,同步⽅法则不能进⼊。 只有等待当前线程执⾏完毕释放锁资源之后,其他线程才有可能进⾏执⾏该同步⽅ 法!延伸 对象锁分为三种:共享资源、 this 、当前类的字节码⽂件对象 245. 编写多线程程序有⼏种实现⽅式? 答: Java 5 以前实现多线程有两种实现⽅法:⼀种是继承 Thread 类;另⼀种是实现 Runnable 接⼝。两种⽅式都要通过重写 run() ⽅法来定义线程的⾏为,推荐 使⽤后者,因为 Java 中的继承是单继承,⼀个类有⼀个⽗类,如果继承了 Thread 类就⽆法再继承其他类了,同时也可以实现资源共享,显然使⽤ Runnable 接⼝更为灵活。 补充: Java 5 以后创建线程还有第三种⽅式:实现 Callable 接⼝,该接⼝中的 call ⽅法可以在线程执⾏结束时产⽣⼀个返回值,代码如下所示: 希望这些面试题对你有所帮助!下一期我们会有关于其他大厂面试题。别忘了关注我们的公众号哦,预防走丢! 最后愿你前程似锦,在冬深 在初春 在夏至在秋末 在码上未来! 码上未来,成就你更好的未来!
END
添加微信咨询
夏老师 @大连码上未来IT培训

资深职业咨询规划师

微信号:155******12

立即咨询

“大连码上未来IT培训”是码上未来科技(大连)有限公司在教育宝平台开设的店铺,若该店铺内信息涉嫌虚假或违法,请点击这里向教育宝反馈,我们将及时进行处理。

机构评分

环境:5.0师资:5.0服务:5.0效果:5.0

公示信息

店铺名称:大连码上未来IT培训

单位名称:码上未来科技(大连)有限公司

账号名称:mswl(158******92)

所属城市:辽宁大连

入驻时长:6年

在线客服:在线聊

微信咨询

返回顶部