海康威视面试记录

应该说,这次面试是比较正儿八经的Java面试,是面对面的。

 

1. 有关运动会成绩管理的网站的数据库表的设计

比赛项目表 记录项目情况 项目编号 项目名称 项目类型 项目比赛时间

数据结构名 说明  
比赛项目表 记录项目情况 项目编号 项目名称 项目类型 项目比赛时间
班级得分表 记录班级得分 项目编号 项目名次 项目得分 班级总分 班级编号
成绩表 比赛成绩记录 项目编号 项目名称 运动员编号 成绩 名次
运动员 运动员基本信息 姓名 性别 学号 班级编号

2. 为什么需要service层,与controller层,dao层的关系

service是业务层,dao是数据访问层

DAO层:
DAO层叫数据访问层,全称为data access object,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一一对应的,其中封装了增删改查基本操作,建议DAO只做原子操作,增删改查。

Service层:
Service层叫服务层,被称为服务,粗略的理解就是对一个或多个DAO进行的再次封装,封装成一个服务,所以这里也就不会是一个原子操作了,需要事物控制。

Controler层:
Controler负责请求转发,接受页面过来的参数,传给Service处理,接到返回值,再传给页面。

3. 遍历ArrayList时,如果删除元素,会出现哪些问题

 

1、ArrayList中的remove方法中,在遍历元素时如果符合删除条件,会将该元素从数组中删除,并且将后一个元素移动(这时候如果下一个元素与当前元素相同,也会向前移动一位)至当前位置,导致下一次循环遍历时后相同元素并没有遍历到,所以无法删除。针对这种情况可以倒序删除的方式来避免;

2.使用for-each法删除的话可能出现ConcurrentModificationException

foreach写法是对实际的Iterable、hasNext、next方法的简写,问题处在fastRemove方法中,

private void fastRemove(int index){
        modCount++;
        intnumMoved=size-index-1;
        if(numMoved>0)             
          System.arraycopy(elementData,index+1,elementData,index,numMoved);
        elementData[--size]=null;// Let gc do its work
}

可以看到第一行把modCount变量的值加一,但在ArrayList返回的迭代器(该代码在其父类AbstractList中)

public Iterator iterator() {
        return new Itr();
}

这里返回的是AbstractList类内部的迭代器实现private class Itr implements Iterator,看这个类的next方法:

public E next() {
        checkForComodification();
        try {
            E next = get(cursor);
            lastRet = cursor++;
            return next;
        } catch (IndexOutOfBoundsException e) {
            checkForComodification();
            throw new NoSuchElementException();
        }
}

第一行checkForComodification方法:

final void checkForComodification() {
        if (modCount != expectedModCount)
            throw new ConcurrentModificationException();
}

这里会做迭代器内部修改次数检查,因为上面的remove(Object)方法修改了modCount的值,所以才会报出并发修改异常。要避免这种情况的出现则在使用迭代器迭代时(显示或for-each的隐式)不要使用ArrayList的remove,改为用Iterator的remove即可。

4. 文件存储,有哪些方案,如果不放在数据库的话

 

现在看这些问题,感觉又挺基础的,也不难,但是面试的时候甚至觉得对方故意难为我。还是自己基础不扎实,感觉还是欠缺一点整体上的理解。。。。距离大公司还是有一点差距的。

内心还是有点难过的。。。。

 

你可能感兴趣的:(个人感想和计划)