程序员进阶面试题(题目含答案)

1 什么是分布式锁?

在单机应用中,多个线程同时访问同个资源时,为了保证数据不混乱,这时候就会使用到锁用来保证数据的同步。但是在分布式的应用中却无法做到,因为分布式应用线程可能会在不同服务器的jvm里面,无法使用jvm自带的锁。
通常有三种实现分布式锁的方法,分别是利用数据库实现、利用redis缓存实现和利用zookeeper实现。

2 maven生命周期

  1. clean,清除原本的构建信息
  2. validate,验证,验证项目是否正确,是否缺少必要信息
  3. compile,编译
  4. test,测试, 使用单元测试框架运行测试
  5. package,打包,打包生成对应的jar包或者war包
  6. install,安装,将打包的项目推到本地仓库中,以供给其他项目使用
  7. deploy,部署,将打包的项目推送到远程仓库中,以供给其他开发人员使用

3 为什么线程执行要调用start而不是直接run

(直接run,跟普通方法没 什么区别,先调start,run才会作为一个线程方法运行)
start方法相当于把线程放到等待队列中去,等待CPU调用,而run方法只是相当于一个不同的方法,相当于直接运行相关的代码。
多线程本质上讲是分时利用cpu,以达到宏观上的并行。

4 IO 会阻塞吗?readLine 是不是阻塞的?

IO分为了阻塞IO和非阻塞IO,常见的阻塞IO有socket,非阻塞IO则有NIO。
使用readLine()时程序会一直阻塞到接收到换行符或回车符为止,如果没有收到换行符客户端那边就被close或者发生异常时,那么readLine()的结果就会是null。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容