笔试 小结

笔试题型 

基础题:          类内部  同包下  子类  包外

关键字解释    public    yes  yes    yes  yes

         protect   yes  yes    yes   

         default   yes  yes

 

         private   yes

      

      final static abstract

编程题:

集合编程:list的应用。在list中存入User,他有一个变量username.要求编写一个函数removeUserFormList(List inList,String username)将名字为username的user移除

这个集合的题看上去挺简单但是其中有个隐藏的小坑,在使用Iterator遍历时是不能调用list的remove方法的,不然会报java.util.ConcurrentModificationException 异常,用for循环则没有这样的问题,但是for也有局限性,不能遍历hashset等集合,还有一种方法就是在Iterator遍历时当if(u.getName().equals(name)){ it.remove();} 调用iterator的remove()就没有影响。

public void removeUserFormList(List<User> inList , String name){
		/*ArrayList<User> list2 = new ArrayList<User>();
		for( Iterator<User> it = inList.iterator();it.hasNext();){
			User u = it.next();
			if(u.getName().equals(name)){
				list2.add(u);
			}
		}
		inList.removeAll(list2);*/
for(int i=0;i<inList.size();i++){ User u = inList.get(i); if(u.getName().equals(name)){ inList.remove(i); } } }

  

写一个类实现singleton的设计模式

class Singleton{

  public static Singleton s = null;

  static{

    s = new Singleton();

  } 

  public static Singoleton newInstance(){

    return s;

  }

}

++++++++++++++++++++++

String s = "Number:";

for(int i=0;i<N;++i){

  s += i+"";

}

对以上程序段做出改进

思路:s += i+"";执行这句话时每执行一次就会生成一个String对象,对内存造成浪费,使用StringBuffer操作;

 

public static void main(String[] args) {
String s = "Number:";
StringBuffer sb = new StringBuffer("");
for(int i=0;i<10;i++){
sb.append(i);
}
sb.insert(0, s);
System.out.println(sb);

}

 

abstract class 和 interface 的区别 

abstract class 没有实体,用于被子类继承,可以实现方法,子类只能继承一个父类

interface 只定义方法不写实现,也没有实体,一个类能实现多个接口;

 from  successF

数据库查询,痛啊,赶快补!

posted @ 2013-04-25 21:16  拙急鸟  阅读(172)  评论(0编辑  收藏  举报