专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 程序员Java经典笔试题目分享

程序员Java经典笔试题目分享

更新时间:2020-05-19 15:14:43 来源:动力节点 浏览1832次

1.在重写equals方法时,需要遵循哪些约定,具体介绍一下?

重写equals方法时需要遵循通用约定:自反性、对称性、传递性、一致性.、非空性

1)自反性

对于任何非null的引用值x,x.equals(x)必须返回true。---这一点基本上不会有啥问题

2)对称性

对于任何非null的引用值x和y,当且仅当x.equals(y)为true时,y.equals(x)也为true。

3)传递性

对于任何非null的引用值x、y、z。如果x.equals(y)==true,y.equals(z)==true,那么x.equals(z)==true。

4)一致性

对于任何非null的引用值x和y,只要equals的比较操作在对象所用的信息没有被修改,那么多次调用x.eqals(y)就会一致性地返回true,或者一致性的返回false。

5)非空性

所有比较的对象都不能为空。

2.Synchronized优化后的锁机制简单介绍一下,包括自旋锁、偏向锁、轻量级锁、重量级锁?

自旋锁:

线程自旋说白了就是让cup在做无用功,比如:可以执行几次for循环,可以执行几条空的汇编指令,目的是占着CPU不放,等待获取锁的机会。如果旋的时间过长会影响整体性能,时间过短又达不到延迟阻塞的目的。

偏向锁:

偏向锁就是一旦线程第一次获得了监视对象,之后让监视对象“偏向”这个线程,之后的多次调用则可以避免CAS操作,

说白了就是置个变量,如果发现为true则无需再走各种加锁/解锁流程。

轻量级锁:

轻量级锁是由偏向所升级来的,偏向锁运行在一个线程进入同步块的情况下,当第二个线程加入锁争用的时候,偏向锁就会升级为轻量级锁;

重量级锁:

重量锁在JVM中又叫对象监视器(Monitor),它很像C中的Mutex,除了具备Mutex(0|1)互斥的功能,它还负责实现了Semaphore(信号量)的功能,也就是说它至少包含一个竞争锁的队列,和一个信号阻塞队列(wait队列),前者负责做互斥,后一个用于做线程同步。

偏向锁、轻量级锁、重量级锁的对比:

3.Redis和Memcache区别对比?如何选择这两个技术?

区别:

1)Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等。

2)Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。

3)虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value交换到磁盘

4)过期策略--memcache在set时就指定,例如setkey1008,即永不过期。Redis可以通过例如expire设定,例如expirename10

5)分布式--设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从

6)存储数据安全--memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化)

7)灾难恢复--memcache挂掉后,数据不可恢复;redis数据丢失后可以通过aof恢复

8)Redis支持数据的备份,即master-slave模式的数据备份。

选型:

若是简单的存取key-value这样的数据用memcache好一些

若是要支持数据持久化,多数据类型(如集合、散列之类的),用列表类型做队列之类的高级应用,就用redis

4,Redis的持久化机制是什么?各自的优缺点?

redis提供两种持久化机制RDB和AOF机制。

1)RDB持久化方式:

是指用数据集快照的方式记录redis数据库的所有键值对。

优点:

  • 只有一个文件dump.rdb,方便持久化。
  • 容灾性好,一个文件可以保存到安全的磁盘。
  • 性能最大化,fork子进程来完成写操作,让主进程继续处理命令,所以是IO最大化。
  • 相对于数据集大时,比AOF的启动效率更高。

缺点:

  • 数据安全性低。
  • AOF持久化方式:是指所有的命令行记录以redis命令请求协议的格式保存为aof文件。

优点:

  • 数据安全,aof持久化可以配置appendfsync属性,有always,每进行一次命令操作就记录到aof文件中一次。
  • 通过append模式写文件,即使中途服务器宕机,可以通过redis-check-aof工具解决数据一致性问题。
  • AOF机制的rewrite模式。

缺点:

  • 文件会比RDB形式的文件大。
  • 数据集大的时候,比rdb启动效率低。

5.Mysql的数据库表锁、行锁、页级锁?

表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作。如果你是写锁,则其它进程则读也不允许

行级,,仅对指定的记录进行加锁,这样其它进程还是可以对同一个表中的其它记录进行操作。

页级,表级锁速度快,但冲突多,行级冲突少,但速度慢。所以取了折衷的页级,一次锁定相邻的一组记录。

程序员Java经典笔试题目分享

以上就是动力节点java培训机构的小编针对“程序员Java经典笔试题目分享”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>