java面试题

1  select a frob tb where a<>2 group by a having sum(b)>1

注意where 在group by 之前 having在 group by 之后 没有()

 

 

面试题 user表(id,name)选出重复name的人

 

select * from user where name in (select name from user group by name having count(id)>1)

 

1  select stdname,
2  isnull(sum( case  stdsubject when  ' 化学 '  then Result end), 0 ) [化学],
3  isnull(sum( case  stdsubject when  ' 数学 '  then Result end), 0 ) [数学],
4  isnull(sum( case  stdsubject when  ' 物理 '  then Result end), 0 ) [物理],
5  isnull(sum( case  stdsubject when  ' 语文 '  then Result end), 0 ) [语文] 
6  from #student 
7  group by stdname

 

2 protected 是对继承而言。默认为friendly对同一package而言,编译时将"."加入到classpath中


3 sevlet 生命周期:init() service() destroy() /doGet()/doPost()

Post和Get区别安全和性能

 

 

3 二叉树 中序遍历

 

在spring2.0之前bean只有2种作用域即:singleton(单例)、non-singleton(也称prototype), Spring2.0以后,增加了session、request、global session三种专用于Web应用程序上下文的Bean

如果你使用的是Servlet 2.4及以上的web容器,那么你仅需要在web应用的XML声明文件web.xml中增加下述ContextListener即可:
<web-app>
   ...
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
   ...
</web-app>

如果是Servlet2.4以前的web容器,那么你要使用一个javax.servlet.Filter的实现:
<web-app>
..
<filter>
    <filter-name>requestContextFilter</filter-name>
    <filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>requestContextFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
   ...
</web-app>

在spring2.0中作用域是可以任意扩展的,你可以自定义作用域,甚至你也可以重新定义已有的作用域(但是你不能覆盖singleton和 prototype),spring的作用域由接口org.springframework.beans.factory.config.Scope来定 义,自定义自己的作用域只要实现该接口即可,下面给个实例:
我们建立一个线程的scope,该scope在表示一个线程中有效,代码如下:
publicclass MyScope implements Scope ...{
      privatefinal ThreadLocal threadScope = new ThreadLocal() ...{
          protected Object initialValue() ...{
             returnnew HashMap();
           }
     };
     public Object get(String name, ObjectFactory objectFactory) ...{
         Map scope = (Map) threadScope.get();
         Object object = scope.get(name);
        if(object==null) ...{
           object = objectFactory.getObject();
           scope.put(name, object);
         }
        return object;
      }
     public Object remove(String name) ...{
         Map scope = (Map) threadScope.get();
        return scope.remove(name);
      }
      publicvoid registerDestructionCallback(String name, Runnable callback) ...{
      }
    public String getConversationId() ...{
       // TODO Auto-generated method stub
        returnnull;
     }
           }

 

 

5 设计模式

vistor模式/观察着模式

 

6  #是把传入的数据当作字符串,$传入的数据直接生成在sql里,

#方式能够很大程度防止sql注入.$方式无法方式sql注入.

$方式一般用于传入数据库对象.例如传入表名,order by  如#field#传入的是id,则sql语句生成是这样,order by "id",这当然会报错,如$field$传入的是id,则sql语句生成是这样,order by id, 这就对了.

一般能用#的就别用$

 

7  MVCC是指多版本并发控制,它提供了数据库并发访问功能。数据库利用MVCC保证每个数据库Connection都拥有一份独立的快照(Snapshot)。每个用户看到的数据都是其发出查询的时间点的数据快照,如果在ORACLE里,MVCC是通过undo表空间来做,在别的数据库上,一般是通过日志文件来实现。
 提高并发性的手段之一就是细化锁的力度,也就是只对你想要修改的数据加锁。只要修改彼此不冲突,通过减少被锁住的数据,就能尽可能的多修改数据。Mysql的不同的存储引擎使用的锁力度也不同,MYISAM使用了表(Table) 锁,而Innodb跟Oracle一样使用的是行锁。但基于锁的并发控制要求应用程序进行获得锁、检查锁是否可用,释放锁等操作,这些操作都会影响应用程序的性能。锁定包括悲观锁定和乐观锁定,一般来说悲观锁定在ORACLE里就是指使用如下语句:select * from table for update。而乐观锁定,在各个数据库上和不同的应用场景中有不同的实现方式
8    Hibernate的缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate方面需要你的经验和能力都很强才行。

iBATIS入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的SQL使用经验,对于没有那么高的对象模型要求的项目来说,相当完美。iBATIS的缺点就是框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值