海康威视面试记录

应该说,这次面试是比较正儿八经的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<E> 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. 文件存储,有哪些方案,如果不放在数据库的话

 

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

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

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值