海康威视芯片岗面经
投递简历时间具体忘了,IC岗没有笔试。
下午没有提前通知,突然电话面试。时长40分钟,全程聊项目。问了一个经典烧绳子计时的急转弯题目,一条绳子点燃以后燃烧速度不均匀,全部烧完需要60分钟,现在有很多条绳子,要求计时75分钟。这个问题很久以前就听过了,但是答案忘了。面试官提示说两头同时烧,一条绳子就变成30分钟了,然后我回答一条绳子两头同时烧,另一条烧一头,第一条烧完以后,把第二条也两头都点上,这样就是15分钟,加上一条绳子60分钟,一共75分钟。最后问了一个时序分析的题目,关于复位的,reset recovery time和reset removal time,我没有复习到这块,没答上来,还没面试的建议好好看看这块。面试官说30号之前是一面阶段,陆续给大家电话面试。
二周后收到第二次面试通知,视频面,两天后下午进行视频面试
视频面试被摆了一道,只有一个问题,别的没有,手撕代码,正常情况下数据包由起始码(16bit)、数据段(n byte n<256)、结束码(16bit)3部分组成。起始码为0xFF00,结束码为0xFF01。在一个完整数据包中,数据段部分不会出现起始码和结束码。请设计一个电路在码流中检测完整且有效的数据包,并输出当前数据包的有效数据长度n。 输入数据接口 In:clk,rstn, din[7:0], din_vld Out: data_cnt[7:0], data_cnt_vld。看题目比较简单,实际上有几个坑,注意,起始码和结束码是16bit的,din是8bit的,然后要考虑几点,异常检测,结束码还没出现的时候如果超过255个byte的数据要报异常,如果中间出现起始码要报异常。我就是题目理解不到位,以为来的数据包都是规规矩矩的,写完了被面试官指出来这几点的时候,我直冒冷汗。各位手撕代码的时候一定要注意看题!!描述不准确一定要和面试官仔细交流!!说来其实如果他在题目理告诉我要做异常处理,估计好一点,而且题目给的端口也没给异常标志位的端口。面试官告诉我这个是他们自己出的,然后问我难度怎么样,现场手撕确实有点难,毕竟慌。他说会根据我们现在的意见,在秋招的时候调整,加以说明或者引导或者降低难度。最后还剩几分钟问我要不要完善代码,我说不了,告辞,反正写不了几行。
希望对各位牛友有所帮助。