整理总结了海康威视嵌入式的面试题目!,可以供大家面试参考
五月底投递,六月初面试,一场技术面,一场HR面,前后隔了两天
一面 4min23s
HR面 20min
总结:挺奇妙的面试。
================================
2024.6.12
发了录用意向,已拒
一面 技术面
自我介绍+项目介绍
项目相关提问。
Q: 了解哪些数据结构?
我:吧啦吧啦。。。
Q: 介绍一下线性表和链表,以及他们的区别?
了解过哈希表吗,能介绍一下吗?
对中断了解吗?
中断服务函数中用printf吗?
说一下网络分层。然后面试官在我回答之后又问了几个常用协议在哪层;其中,还问了ARP协议在哪层,我回答在网络层。然后面试官问我你知道ARP协议是什么吗?我解释了一通。最后面试官说通常认为它是在数据链路层。
我是记得我看书的时候是写的属于网络层,回来之后查了一下,具体内容如下:
很多教科书和培训教材上,都把ARP协议划分到网络层。我想主要的原因在于ARP协议属于TCP/IP协议簇,而在TCP/IP模型中,所有定义的协议至少是在网际层(或称网络层,IP层)。
但是,按照OSI的标准,当数据向下传递时,每层会加上自己的信息,各层互不干扰.这样当网络层的IP包进入链路层时,链路层该如何加这个头部的目标信息呢?它要依靠ARP协议来完成.显然如何加链路头并不是网络层的功能。而且,ARP协议工作时,并不使用IP的包头。所以也有很多人说,ARP是链路层的。可以说,在TCP/IP模型中,ARP协议属于IP层;在OSI模型中,ARP协议属于链路层。
最后就是提问环节。
我在技术面提问环节一般都会问一下: 如果我有幸加入贵公司,我这个岗位一般的工作内容是什么?
总结:可能因为面试时常只有半个小时吧,没有考察代码能力。问的关于语言的知识不是很多。总体来说,技术面面试难度不难。
二面 综合面
自我介绍
在你的项目经历中,哪个项目对你来说是最难的?难点是如何攻克的?简单介绍一下。
在本科和硕士的学习以及科研经历中,有没有什么是比较耗费你的精力的?是如何改善它的?
在学习一些新的技术或者进入新的领域中时,你有没有总结出一些行之有效的方法?
在你这几年的学习和科研中,有没有什么比较想达成的目标或者愿望?你是通过什么样的方法和路径去实现的?
你在比赛中能够获奖,你觉得你最关键的因素是什么?
这几年有没有碰到什么从现在的结果来看比较失败的决策或者决定?你从中学到了什么?
保研时候,你为何选择现在的学校呢,是出于一种什么样的考虑呢?
你知道你的岗位要做什么吗?
你的意向工作城市是?你的家人对于你的工作地点选择会有限制吗?
有男朋友吗,他会对你的工作地点选择有影响吗?
有没有其他offer,方便讲一下吗?
这个面试官比较喜欢在我回答完之后对我的回答进行总结,然后问我是不是这样,可能他觉得我的表述能力欠佳吧
总结:讲真,我是有点怵综合面的,你以为是送分题,万万没有想到是送命题,可能有时候你都不知道自己咋挂的。
综合面之前,请提前了解一下公司,要不然有时候会非常尴尬。
相关面经可以参考大佬的面经链接
投递的是海康的嵌入式软件岗,主要方向分应用和bsp。
面试时长大概为40分钟,手撕 + 八股
1、首先自我介绍、项目介绍,5min
2、介绍一下linux系统的进程和线程
3、进程线程通信方式都有哪些?有用到过什么(自己用过互斥锁、信号量)
4、手撕:合并两个有序链表(手撕完继续八股拷打。。)
5、static关键字作用、全局变量和局部变量是否可重名、堆栈区别
6、了解网络协议吗、TCP UDP区别、socket套接字、描述一下客户端与服务端如何通过socket建立通信(具体的代码流程)
7、linux新建线程默认分配内存大小?
8、linux中断模块,为什么分上下半部?中断服务函数中要注意些什么?
9、linux中的信号机制
10、linux中如何进行任务调度
11、反问:实习具体业务、到岗时间等
(别人的面经:TF卡写图像、满了重写、文件查询如何实现编程? int char指针大小)
总体来说,问的还是比较宽泛,应用层底层基本都有涉及,自己还是对linux底层相关概念缺乏深入了解,后续还得补
6.6 发座谈会
今天给大家分享一下海康威视嵌入式软件工程师的面试经验:
一面技术面,因为我的课题和嵌入式没什么关系,没问我课题内容。问了一点单片机的内容,片上资源、最小系统。这里面有90%是C语言,比如malloc内存分配、函数指针等。这轮面试的时候,面试官比较严肃,也没啥表情,虽然题目难度不大,但是让人容易紧张。
二面HR面,让我介绍了一下课题,然后问家庭情况、父母对工作地点有无要求、喜欢卷的地方还是轻松点的地方、期望薪资,然后给刷了。
说实话,至今我还很迷,我觉得这些问题也问不出我和职位的匹配度吧…
undefined#嵌入式笔面经分享#
#嵌入式笔面经分享#
海康公司嵌入式硬件面经(第x面)
时间:6月30日-6月30日
时长:40分钟
面试内容:预处理器(Preprocessor)
1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
我在这想看到几件事情:
2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。
如果你在你的表达式中用到UL(表示无符号长整型),那么你有了一个好的起点。记住,第一印象很重要。
5.24 暑期嵌入式一面bsp (30分钟)
自我介绍
介绍项目,问一些细节,担任角色,项目方案如何确定,难点
问实习内容
uboot启动代码最关键的部分
拥塞机制在内核的体现
最小linux系统应该包含哪些东西
问了两个内核的问题,不太会
两个题 :内存偏移和找错
反问:两周内出结果
#嵌入式笔面经分享#海康公司嵌入式硬件面经(第1面)
时间:6月30日-6月30日
时长:30分钟
面试内容:
中断(Interrupts)
中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。
__interrupt double compute_area (double radius){double area = PI * radius * radius;printf(“\nArea = %f”, area);return area;}
这个函数有太多的错误了,以至让人不知从何说起了:
1)ISR 不能返回一个值。如果你不懂这个,那么你不会被雇用的。
ISR 不能传递参数。如果你没有看到这一点,你被雇用的机会等同第一项。
在许多的处理器/编译器中,浮点一般都是不可重入的。有些处理器/编译器需要让额处的寄存器入栈,有些处理器/编译器就是不允许在ISR中做浮点运算。此外,ISR应该是短而有效率的,在ISR中做浮点运算是不明智的。
与第三点一脉相承,printf()经常有重入和性能上的问题。如果你丢掉了第三和第四点,我不会太为难你的。不用说,如果你能得到后两点,那么你的被雇用前景越来越光明了。
#嵌入式笔面经分享#海康公司嵌入式硬件面经(第1面)
时间:6月30日-6月30日
时长:30分钟
面试内容:关键字volatile有什么含意?并给出三个不同的例子。一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:
并行设备的硬件寄存器(如:状态寄存器)
一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
多线程应用中被几个任务共享的变量
回答不出这个问题的人是不会被雇佣的。我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。搞嵌入式的家伙们经常同硬件、中断、RTOS等等打交道,所有这些都要求用到volatile变量。不懂得volatile的内容将会带来灾难。假设被面试者正确地回答了这是问题(嗯,怀疑是否会是这样),我将稍微深究一下,看一下这家伙是不是直正懂得volatile完全的重要性。1)一个参数既可以是const还可以是volatile吗?解释为什么。2); 一个指针可以是volatile 吗?解释为什么。3); 下面的函数有什么错误:
int square(volatile int *ptr){return *ptr * *ptr;}
下面是答案:1)是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。2); 是的。尽管这并不很常见。一个例子是当一个中服务子程序修该一个指向一个buffer的指针时。3) 这段代码有点变态。这段代码的目的是用来返指针ptr指向值的平方,但是,由于ptr指向一个volatile型参数,编译器将产生类似下面的代码:
int square(volatile int *ptr){int a,b;a = *ptr;b = *ptr;return a * b;}
由于*ptr的值可能被意想不到地该变,因此a和b可能是不同的。结果,这段代码可能返不是你所期望的平方值!正确的代码如下:
long square(volatile int *ptr){int a;a = *ptr;return a * a;}
位操作(Bit manipulation)
面试总结:注重基础
面试了海康威视嵌入式软件工程师岗。总体面试感觉不错,有一定难度,给大家分享一下:
一共有两面,一面技术面,二面HR面。
一面问了很多问题,主要是C语言的问题,结构体对齐,字符串操作的函数,指针函数的声明等,还问了RTOS的问题,信号量和互斥量的区别,创建线程需要声明的变量等。都是专业性问题,比较考逻辑思维能力,大家面试前一定要复盘一下专业知识。
二面是HR面,主要介绍一下项目,项目的人数,有成就感的事情等,这一面难度不大。
以上就是我面试分享啦,希望能够通过吧!
#嵌入式笔面经分享#海康公司嵌入式硬件面经(第1面)
时间:6月30日-6月30日
时长:40分钟
面试内容:嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?
这个问题用几个解决方案。我首选的方案是:
while(1){
}
一些程序员更喜欢如下方案:
for(;{
}
这个实现方式让我为难,因为这个语法没有确切表达到底怎么回事。如果一个应试者给出这个作为方案,我将用这个作为一个机会去探究他们这样做的基本原理。如果他们的基本答案是:"我被教着这样做,但从没有想到过为什么。"这会给我留下一个坏印象。
第三个方案是用 gotoLoop:…goto Loop;应试者如给出上面的方案,这说明或者他是一个汇编语言程序员(这也许是好事)或者他是一个想进入新领域的BASIC/FORTRAN程序员。
数据声明(Data declarations)
面试总结:注意细节
【2023年校招】
7.29投递简历,当天发测评(有行测,每道题限时,会挂人)
过了几天发笔试,选择填空最后两道编程题,不难,发笔试的时间可能跟投递总部分部有关系,总部简历量大会慢
8.24号一面,35分钟,全问项目细节,项目不够会问八股(多线程多进程tcp/udp套接字gtest断言总线协议c/c++指针函数结构体之类的)
ps:康子不是学历厂,简历筛选不看学校更看重项目和意向部门产品的匹配度!!!
9.2号二面,hr面,会刷人不过很少
1.首先自我介绍然后开始问项目细节(10来分钟)
2.问挑选公司主要看哪些地方
3.问家住哪里有没有对象
4.描述性格特点和缺点
5.问意向薪资,依据是什么
6.手上的offer
7.其他的想不起来了
9.6号短信通知:面试环节结束,进入录用评估(代表面试通过进池子泡着了)
ps:这个阶段官网流程面试通过环节不会推进流程的,不用一直刷
pps:会分批次打谈薪电话,貌似有三批,第一批10月初收到座谈会邮件,第二批10月下旬,第三批11月
10.23官网流程面试环节那里多了一行红色小字:面试环节已完成,不可更改面试地点(代表已录取,坐等谈薪电话)
10.24收到谈薪电话,下午收到座谈会邮件,意向
⚠️走完一个环节之后官网流程没变化是好事!!!康子挂人更新状态很快的,当天面完第二天就流程结束,没变化就暂时安全
#嵌入式笔面经分享#海康公司嵌入式硬件面经(第1面)
时间:6月30日-6月30日
时长:30分钟
面试内容:关键字const有什么含意?我只要一听到被面试者说:“const意味着常数”,我就知道我正在和一个业余者打交道。去年Dan Saks已经在他的文章里完全概括了const的所有用法,因此ESP(译者:Embedded Systems Programming)的每一位读者应该非常熟悉const能做什么和不能做什么.如果你从没有读到那篇文章,只要能说出const意味着"只读"就可以了。尽管这个答案不是完全的答案,但我接受它作为一个正确的答案。(如果你想知道更详细的答案,仔细读一下Saks的文章吧。)如果应试者能正确回答这个问题,我将问他一个附加的问题:下面的声明都是什么意思?
const int a;int const a;const int *a;int * const a;int const * a const;
前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。如果应试者能正确回答这些问题,那么他就给我留下了一个好印象。顺带提一句,也许你可能会问,即使不用关键字 const,也还是能很容易写出功能正确的程序,那么我为什么还要如此看重关键字const呢?我也如下的几下理由:
关键字const的作用是为给读你代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉了用户这个参数的应用目的。如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得用const的程序员很少会留下的垃圾让别人来清理的。)
通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。
合理地使用关键字const可以使编译器很自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少bug的出现。
面试总结:注重基础
一面先是自我介绍然后问了一下项目,我说的这学期的课设32的然后中间主要是具体问了一下项目吧,因为问的感觉比较乱,就不太好总结,但就和项目比较相关,看你说的是什么项目因为我可能说了操作系统相关的问了一下12C,答了是同步通讯,有两条线,一条数据线,一条时钟线,同时要知道地址是啥然后问了一下中断是什么,这个我感觉答的奇奇怪怪的因为我嘴贱提了一下freertos和linux他问了一下freertos和linux的区别,答得很乱然后问了一下优先级问题其他具体问题就不要记得然后接下来是些针对个人的问题比如说你的优点和缺点之类的,然后会根据你的回答展开一下还问了职业规划有的问题记不得了然后就是反问
#嵌入式笔面经分享#海康公司嵌入式硬件面经(第1面)#嵌入式笔面经分享#海康公司嵌入式硬件面经(第1面)
时间:6月30日-6月30日
时长:30分钟
面试内容:
下面的代码输出是什么,为什么?
void foo(void){ unsigned int a = 6; int b = -20; (a+b > 6) ? puts(“> 6”) : puts(“<= 6”);}这个问题测试你是否懂得C语言中的整数自动转换原则,我发现有些开发者懂得极少这些东西。不管如何,这无符号整型问题的答案是输出是 “>6”。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。
面试总结:注重基础
一面 专业面
二面 hr面
三面 综合面
我应聘的职位是嵌入式软件工程师,参加了海康威视的宣讲会,介绍公司完毕之后就是现场笔试。
笔试:
嵌入式软件工程师的笔试卷子分为两套,A卷和B卷。
1.B卷大多数知识涉及了LINUX相关,问了不少系统内核的知识,C语言方面考的也是链表,缓冲区的实现以及多线程编程,剩下的就是一些网络字节序转换之类的基本知识。
2.反观A卷,A卷网络知识偏多,也就是传统的TCP/IP协议分层,网络字节序函数转换,并且C语言的考察都是比较基础的比如说sizeof,判断大小端,二级指针等等问题,最后一个题是一个数学类型的题目。
一轮技术面:
海康威视在几个高校宣讲完毕之后才正式收到了面试短信。
因为第一轮技术面是需要等待排队按顺序的,大概我比预订时间延长了20多分钟才轮到我。
面试的时候我发现其实卷子公司并没有批改,而是根据完成的情况好坏挑选出来了面试的人,并没有完全打分说卷子得了XX分数。
在大多数时间里面试官都是在听我说我的一些项目的问题,主要就是把简历上的项目介绍好了,让面试官能听懂你的项目的含义,如果项目是嵌入式对口的那就很有优势。
面试官也没考我一些技术型的问题,最后就是闲聊了一下海康威视所在的视频安防监控领域所占有的领导地位以及其他相关公司的发展现状等等就结束了。
二轮HR面:
二面是HR面,基本都是HR类的问题,以闲聊为主,面试结束之后就匆匆赶回去了。
1.家是哪里的?
2.为什么要选择我们公司?
3.对公司了解多少?
4.远离家乡工作你爸妈怎么看等等。
5.然后也问了一些校园生活相关的。
6.问了我是不是在学校里面平时是不是都当Leader?
上午总共面了两轮,希望能通过,许愿offer
技术面:
1.自我介绍
2.谈谈项目
3.对linux有了解吗,说说进程与线程
4.了解哪些排序,讲讲快排,冒泡
5.对网络协议有了解吗,TCP与UDP的区别
6.讲讲TCP三次握手
大概就这些吧,其他的忘了。。。
HR面:
自我介绍,谈谈薪资,对海康威视的看法,聊了聊人生理想啥的,工作地点
我应聘的职位是嵌入式软件工程师,参加了海康威视的宣讲会,介绍公司完毕之后就是现场笔试。
笔试:
嵌入式软件工程师的笔试卷子分为两套,A卷和B卷。
1.B卷大多数知识涉及了LINUX相关,问了不少系统内核的知识,C语言方面考的也是链表,缓冲区的实现以及多线程编程,剩下的就是一些网络字节序转换之类的基本知识。
2.反观A卷,A卷网络知识偏多,也就是传统的TCP/IP协议分层,网络字节序函数转换,并且C语言的考察都是比较基础的比如说sizeof,判断大小端,二级指针等等问题,最后一个题是一个数学类型的题目。
一轮技术面:
海康威视在几个高校宣讲完毕之后才正式收到了面试短信。
因为第一轮技术面是需要等待排队按顺序的,大概我比预订时间延长了20多分钟才轮到我。
面试的时候我发现其实卷子公司并没有批改,而是根据完成的情况好坏挑选出来了面试的人,并没有完全打分说卷子得了XX分数。
在大多数时间里面试官都是在听我说我的一些项目的问题,主要就是把简历上的项目介绍好了,让面试官能听懂你的项目的含义,如果项目是嵌入式对口的那就很有优势。
面试官也没考我一些技术型的问题,最后就是闲聊了一下海康威视所在的视频安防监控领域所占有的领导地位以及其他相关公司的发展现状等等就结束了。
二轮HR面:
二面是HR面,基本都是HR类的问题,以闲聊为主,面试结束之后就匆匆赶回去了。
1.家是哪里的?
2.为什么要选择我们公司?
3.对公司了解多少?
4.远离家乡工作你爸妈怎么看等等。
5.然后也问了一些校园生活相关的。
6.问了我是不是在学校里面平时是不是都当Leader?
#海康威视##面试题目#
我应聘的职位是嵌入式软件工程师,参加了海康威视的宣讲会,介绍公司完毕之后就是现场笔试。
笔试:
嵌入式软件工程师的笔试卷子分为两套,A卷和B卷。
1.B卷大多数知识涉及了LINUX相关,问了不少系统内核的知识,C语言方面考的也是链表,缓冲区的实现以及多线程编程,剩下的就是一些网络字节序转换之类的基本知识。
2.反观A卷,A卷网络知识偏多,也就是传统的TCP/IP协议分层,网络字节序函数转换,并且C语言的考察都是比较基础的比如说sizeof,判断大小端,二级指针等等问题,最后一个题是一个数学类型的题目。
一轮技术面:
海康威视在几个高校宣讲完毕之后才正式收到了面试短信。
因为第一轮技术面是需要等待排队按顺序的,大概我比预订时间延长了20多分钟才轮到我。
面试的时候我发现其实卷子公司并没有批改,而是根据完成的情况好坏挑选出来了面试的人,并没有完全打分说卷子得了XX分数。
在大多数时间里面试官都是在听我说我的一些项目的问题,主要就是把简历上的项目介绍好了,让面试官能听懂你的项目的含义,如果项目是嵌入式对口的那就很有优势。
面试官也没考我一些技术型的问题,最后就是闲聊了一下海康威视所在的视频安防监控领域所占有的领导地位以及其他相关公司的发展现状等等就结束了。
二轮HR面:
二面是HR面,基本都是HR类的问题,以闲聊为主,面试结束之后就匆匆赶回去了。
1.家是哪里的?
2.为什么要选择我们公司?
3.对公司了解多少?
4.远离家乡工作你爸妈怎么看等等。
5.然后也问了一些校园生活相关的。
6.问了我是不是在学校里面平时是不是都当Leader?
#海康威视##面试题目#