海康威视面试记录

应该说,这次面试是比较正儿八经的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
    评论
海康威视嵌入式面试BSP主要是测试应聘者在嵌入式系统中的底层开发和调试方面的技能。 首先,对于海康威视嵌入式岗位面试BSP的要求一般会包括以下几个方面: 1. 操作系统知识:应聘者需要具备嵌入式操作系统的基本知识,例如Linux、RTOS等,了解操作系统的内核结构以及驱动程序的开发和调试。 2. C/C++语言编程能力:对于嵌入式系统,C/C++是主要的开发语言,应聘者需要具备熟练的编程能力和良好的代码质量意识。 3. 编程工具和调试技能:应聘者需要熟悉常用的开发工具,例如gcc、gdb等,并且具备一定的调试经验,能够定位和修复底层驱动程序的错误。 4. 硬件知识:应聘者需要了解嵌入式系统的硬件组成和接口标准,例如ARM架构、PCIe、USB等,能够根据硬件要求进行底层驱动程序的开发和适配。 在面试过程中,可能会遇到以下问题: 1. 请解释嵌入式操作系统和普通操作系统的区别。 2. 如何设计和实现一个简单的设备驱动程序? 3. 请解释中断和轮询的区别,并说明在什么情况下使用中断更为合适? 4. 当一个硬件设备出错时,如何进行调试和定位问题?举例说明。 此外,面试官还可能会通过编程题、技术问题和项目经验来考察应聘者的技能。 总之,海康威视嵌入式面试BSP主要考察应聘者在嵌入式底层开发和调试方面的技能和经验。应聘者需要熟悉操作系统、掌握C/C++编程技能、具备调试经验,并且对嵌入式硬件有一定的了解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值