面试题

  1. 简述一下面向对象的特征,并举例说明你对面向对象的理解?(5分)
    面向对象是基于万物皆对象这个哲学观点,把一个帝乡抽象成类,具体就是你吧一个对象的静态特征和动态特征抽象成属性和方法,也就是把一类事务的算法和数据结构封装在一个类之中,程序就是多个对象和互相间的通信组成的。
    面向对象具有封装性,继承性,多态性。封装隐蔽了对象内部不需要暴漏的细节,似的内部细节的变动跟外界脱离,只依靠接口进行通信。封装性降低了编程的复杂性。通过继承,使得新建一个类变得容易,一个类从派生类哪里获得其非私有的方法和公用属性的繁琐工作交给了编译器。而继承和实现接口和运行时的类型标定机制所产生的多态,使得不同的类所产生的对象能够对相同的消息做出不同的反映,记得提高了代码的通用性。
    总之,面向对象的特性提高了大型程序的重用性和可维护性。
  2. ArrayList和HsahSet的区别,HashMap和Hashtable的区别?(5分)
    ArrayList和HashSet的区别:
    ArrayList是一组有序的集合,存放的是对象的引用,而不是对象本身。存放的对象是可以重复的。
    HashSet存放的对象是不可重复的。

HashMap和Hashtable的区别:
继承的类不同
HashTable是线程安全的,而HashMap是非线程安全的。
HashMap的key,value是允许null的,而HashTable不允许。且HashMap效率高。

  1. 线程同步的关键字是什么?sleep() 和 wait() 有什么区别?怎么唤醒wait()停止的线程?(5分)
    线程同步的关键字:synchronized
    Sleep()和Wait()的区别:
    父类不同Sleep()来自Thread类,wait()来自Objcet类
    最主要的是sleep()方法没有释放锁,而wait方法释放了所,使得其他线程可以使用同步空值快或者方法。
    Sleep不让出系统资源;wait是进入线程等待池等待,让出系统资源,其他线程可以占用cpu,且需要notify,notifyAlll来唤醒等待池中的线程。
    使用范围:wait,notify和notifyAll只能在同步空值方法或者同步控制块里使用,而sleep可以在任何地方使用
    Sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常

  2. 列举你在项目中常用的设计模式(伪代码或类图),并说明每种设计模式的具体应用场景。(5分)
    单例模式
    Public class Singleton{
    private static volatile Singleton singleton = null;
    private Singleton(){}
    public static Singleton getSingleton(){
    if(singleton == null){
    synchronized(Singleton.class){
    if(singleton == null){
    singleton = new Singleton();
    }
    }
    }
    return singleton;
    }
    }

多线程中多次获取某个对象的实例,而不必每次都去new。

  1. Spring中事务管理支持哪几种方式以及每种方式的具体使用方法。(5分)
    实现方式两种:
    编码方式;
    声明式事务管理方式。
    声明式事务管理是通过AOP技术实现的,实质就是:在方法执行前后进行拦截,然后在目标方法开始之前创建并加入事务,执行完成目标方法后根据执行情况提交后回滚事务。
    声明式事务管理有两种方式:基于XML配置文件(拦截器 AOP),通过标签@Transaction注解

另一种答案:
1.每个bead都有一个事务代理

Hibernate的缓存等级及其特点(5分)
一级缓存:session级别的缓存,session关闭后,缓存就没有了
二级缓存:sessionFactory级别的缓存,它缓存的是对象
查询缓存:查询缓存也是sessionFactory级别的缓存,它缓存的是sql语句

一般二级缓存要和查询缓存配合使用,避免N+1的问题。更建议使用mamcatched单独做缓存。

  1. 至少写出一种11位手机号码的正则表达式。(5分)
    ^[1][358][0-9]{9}$

  2. 用简短的代码实现字符串“s tr in g”到“s tr in g”转换。即将多个空格转换为一个空格(5分)
    String s = “s tr in g”;
    S=s.replaceAll(“ +”,” ”);

  3. 使用Socket编写一个程序,客户端向服务器端发送请求(发送字符串即可),服务端接收后发送反馈信息.(10分)
    TCP协议

网上例子很多 自己找。代码过长
8. 用SQL语句实现Oracle分页查询。(10分)
Select * from (select ROWNUM rn,t.* from tableName T where t.rn <=40) TT where tt.rn >=10
Select * from tableName where userID limit 0,20;

aa,bb表都有20个字段,且记录数量都很大,aa,bb表的X字段(非空)上有索引, 请用SQL列出aa表里面存在的X在bb表不存在的X的值,请写出认为最快的语句,并解译原因。(10分)
select a.x from aa a where not exists (select 1 from bb b where a.x = b.x)

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