java

当前位置:中华考试网 >> java >> java面试题 >> 文章内容

2020年java常见面试题及答案

来源:中华考试网  [2020年9月28日]  【

  1. java中wait和sleep有什么区别?多线程条件下如何保证数据安全?

  答:最大区别是等待时wait会释放锁,而sleep会一直持有锁,wait通常用于线程时交,互,sleep通常被用于暂停执行。

  2. java中volatile和synchronized有什么区别?

  1.volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取;synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。

  2.volatile仅能使用在变量级别;synchronized则可以使用在变量、方法、和类级别的。

  3.volatile仅能实现变量的修改可见性,并不能保证原子性;而synchronized则可以保证变量的修改可见性和原子性。

  4.volatile不会造成线程的阻塞;synchronized可能会造成线程的阻塞。

  5.volatile标记的变量不会被编译器优化;synchronized标记的变量可以被编译器优化。

  3. 有了解java的原子类?实现原理是什么?

  答:采用硬件提供原子操作指令实现的,即CAS。每次调用都会先判断预期的值是否符合,才进行写操作,保证数据安全。

  4. spring主要使用了哪些?IOC实现原理是什么?AOP实现原理是什么?

  答:spring主要功能有IOC,AOP,MVC等,IOC实现原理:先反射生成实例,然后调用时主动注入。AOP原理:主要使用java动态代理,

  5. mybatis有了解吗?它与hibernate有什么区别?项目中,你会选哪个?

  答:两者都是轻量级ORM框架,hibernate实现功能比较多,通过HQL操作数据库,比较简单方便,但hibernate自动生成的sql相长,不利测试和查找原因。复杂sql时,编写比较困难,同时性能也会降低。mybatis是半自动化,手动编写SQL语句,同时提供丰富的参数判断功能。sql语句较清晰,可以直接进行测试,性能也较好,操作起来非常简单。同时hibernate容易产生n+1问题。hibernate学习成本较mybatis高。国内一些大公司基本上使用mybatis

  填写下面表单即可预约申请免费试听!害怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

责编:yangliu1997
  • 会计考试
  • 建筑工程
  • 职业资格
  • 医药考试
  • 外语考试
  • 学历考试