java试题

1、Integer a=new Integer(3);Integer b=new Integer(3);System.out.println(a==b);输出结果是?
答:false

2、String比较
/**
* 多个String引用指向同一个字面量时,在堆内存当中只有一个Java对象
* 如果调用String的构造函数给String类型的引用赋值,那么每调用一次构造函数,在堆内存当中就会生成一个String对象
* 所以如果s1和s2都是同一个字面量赋值,那么无论是用==比较,还是用equals函数比较,都会返回true
* 如果s1和s2都是使用构造函数生成的对象,并且传入构造函数参数的字面量相等,那么用==比较会返回false,用equals 比较就会返回true
*/

String s1 = new String("bdqn");
String s2 = s1;
String s3 = "bdqn";

System.out.println(s1 == s2);//true  s1和s2
System.out.println(s1 == s3);//false
System.out.println(s1.equals(s2));//true
System.out.println(s1.equals(s3));//true

4、用synchronized和ThreadLocal的区别?
相同点
都是为了解决多线程中同一变量的访问冲突问题。

不同点

  • ThreadLocal是一个java类,synchronized是Java的一个保留字;
  • 在同步机制中,通过对象的锁机制保证同一时间只有一个线程访问变量。这时该变量是多个线程共享的,使用同步机制要求程序慎密地分析什么时候需要锁定某个对象,什么时候释放对象锁等繁杂的问题,程序设计和编写难度相对较大。
    而ThreadLocal则从另一个角度来解决多线程的并发访问。ThreadLocal会为每一个线程提供一个独立的变量副本,从而隔离了多个线程对数据的访问冲突。因为每一个线程都拥有自己的变量副本,从而也就没有必要对该变量进行同步了。ThreadLocal提供了线程安全的共享对象,在编写多线程代码时,可以把不安全的变量封装进ThreadLocal。
    概括起来说,对于多线程资源共享的问题,同步机制仅提供一份变量,让不同的线程排队访问,而ThreadLocal为每一个线程都提供了一份变量,因此可以同时访问而互不影响。

5、假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。
答:
将6升壶装满倒入5升壶,6升壶剩1升水,将5升壶倒空,将这1升水倒入5升壶;
将6升壶装满倒入5升壶,6升壶剩2升水,将5升壶倒空,将这2升水倒入5升壶;
将6升壶装满倒入5升壶,6升壶剩3升水,将5升壶倒空,此时即得到6升壶中的3升水。

6、用最高效的方法,输出计算:1+2+…100的结果。
答:for循环。

7、下一个数字是什么?5、6、7、8、10、11、14、?

答:15

分成两组看
5、7(5+2)、10(7+3)、14(10+4)
6、8(6+2)、11(8+3)
所以,下一个是11+4=15

8、在oracle数据库中需要查询出前8条记录的sql语句怎么写?

select * from emp where rownum<=8;

9、Hql分页查询10-20条数据的代码?

Session session = HibernateSessionFactory.getSession();   
Query q=session.createQuery("from table");  
q.setFirstResult(10);
q.setMaxResults(11); //取出11条数据
List list=q.list();

10、什么是UUID?
通用唯一识别码,它是在一定的范围内唯一的机器生成的标识符,只能由计算机生成,非人工指定,非人工识别。

UUID uuid = UUID.randomUUID();

11、sql:查询出成绩全部合格的学生信息
答:

12、上中下左中右九个点,一笔画出四条直线连接9个点。

答:伞形。

13、JDBC的步骤

Connection connection = null;
Statement stmt = null;
ResultSet rs = null;
try {
    //(1)Class.forName()加载驱动
    Class.forName("com.mysql.jdbc.Driver");
    //(2)DriverManager.getConnection(URL,用户名,密码)获得数据库连接 (Connection)
    connection = DriverManager.getConnection("jdbc:mysql://10.0.0.194:3306/news","root","bdqn");
    //(3)获得Statement对象,执行SQL语句
    String sql = "select * from news_detail";
    stmt = connection.createStatement();
    rs = stmt.executeQuery(sql);
    //(4)处理执行结果(ResultSet),
    while(rs.next()){
        int id = rs.getInt("id");
        String title = rs.getString("title");
        String summary = rs.getString("summary");
        String content = rs.getString("content");
        String author = rs.getString("author");
        Timestamp createDate = rs.getTimestamp("createDate");
        System.out.println(id + "\t" + title + "\t" + summary + "\t"+ content + "\t" + author + "\t" + createDate);
    }
} catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}finally{
    //释放资源
    try {
        rs.close();
        stmt.close();
        connection.close();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

14、MyBatis的定义?

MyBatis 是支持普通sql查询、存储过程和高级映射的优秀持久层框架。

15、MyBatis 与 JDBC 相比,有哪些优点?

  • 减少了代码量;
  • SQL代码从程序代码中彻底分离,可重用;
  • 增强了项目中的分工;
  • 增强了移植性;
  • 最简单的持久化框架;
  • 架构级性能增强

16、MyBatis 与 Hibernate 比较

MyBatis Hibernate
POJO与sql语句进行映射 POJO与数据库表进行映射
运行期间不自动生成sql 自动生成sql
自动化程度低,需手动映射 自动化程度高,映射配置
灵活程度高 API复杂,灵活性低
开发人员需熟练掌握sql语句 开发人员不必关注sql语句

你可能感兴趣的:(试题)