面试题

首页 > 面试题 > 列表

面试题

1. java中wait和sleep有什么区别

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

sleep()是线程线程类(Thread)的方法,调用会暂停此线程指定的时间,但监控依然保持,不会释放对象锁,到时间自动恢复;wait()是Object的方法,调用会放弃对象锁,进入等待队列,待调用notify()/notifyAll()唤醒指定的线程或者所有线程,才会进入锁池,不再次获得对象锁才会进入运行状态;

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

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

3. 说说数据库性能优化有哪些方法

  • 使用explain进行优化,查看sql是否充分使用索引
  • 避免使用in,用exist替代
  • 查询时要尽可能将操作移至等号右边
  • 尽量避免全表查询
  • 使用查询缓存优化查询
    • 示例如下:
      
      1:SELECT username FROM user WHERE signup_date = CURDATE() (尽量sql语句不要总是变化)
      
      2:SELECT username FROM user WHERE signup_date = '2014-06-24‘
  • 为搜索字段建立索引(索引不一定就是给主键或者是唯一的字段,如果在表中,有某个字段经常用来做搜索,需要将其建立索引)

4. HTTP请求方法get和post有什么区别

1:Post传输数据时,不需要在URL中显示出来,而Get方法要在URL中显示。(安全性)

2:Post传输的数据量大,可以达到2M,而Get方法由于受到URL长度限制,只能 传递大约1024字节.(数据量)

3:Post就是为了将数据传送到服务器段,Get就是为了从服务器段取得数据.而Get 之所以也能传送数据,只是用来设计告诉服务器,你到底需要什么样的数据.Post 的信息作为http请求的内容,而Get是在Http头部传输的。

5. 有了解分布式事务如何实现

6、了解java反射机制反射生成类,能访问私有变量

答、在将源代码进行编译成字节码时候通过类加载器将类的各个组成部分封装为其他对象,这就是反射机制(比如把成员变量抽取出来封装成数组 Field [],构造函数抽取出来封装成数组 Construction [],将成员方法封装成 Method [])

对于反射机制来说,在反射面前没有公有私有,都可以通过暴力反射解决。