旷视科技 face++ 嵌入式软件开发-面试---深度好文

今天2019-5-15号,去参加了旷视科技-嵌入式软件开发-岗位的面试,觉得公司还不错,在这里总结一下,方便以后去面试的同学和自己的总结回顾。

岗位描述

旷视嵌入式开发主要分两个方向:偏应用岗位 和 偏向驱动开发

前者主要工作内容是就是在摄像机中(hisi平台)搭建算法的运行环境,摄像机的基本功能开发,后者则以驱动编写,linux系统移植等相关工作,据说各占1/3 。此部门剩余的人,我没听错的话应该是主要做算法在不同平台上的转化和优化,比如将人脸、车辆算法模型转换到hisi的nnie中等。好像还有一部分人是做FPGA,芯片的相关工作。

我本身一直是做摄像机的应用层开发,包括hisi的一些媒体层处理,更偏向应用岗位(他们公司俗称固件开发多一些)。可能内推的人一看是嵌入式就给我投了,首面的人主要想驱动开发做的多一些(有些因素真的是靠运气。。。),但是面试应该还都是这几个人面试。

面试流程

带我去面试的人力的hr是个实习生,最开始我去面试电话都打不通,一直是什么来电提醒服务,真是无语,等了差不多15min才见到面试官,实习生小菇凉说一般面试分为3轮,差不错两个小时的样子。

一面:可能是个组内的小组长,年龄跟我差不多,28左右吧,感觉他可能更偏向底层一些,因为交流中我感觉他对linux共享内存等一些列操作不是特别熟悉,但他也是准备了几个问题的。

1.问我的强项,优势在哪里:我回答了hisi上媒体处理流程,然后就让我画了下我们公司现有产品的框架,大致讲解下。

    那我肯定是很稳了,公司新产品70%代码都是我写的(一共才三个应用开发。。。)

2.针对我写的流程中问了共享内存的处理,怎么保持同步。

3.写一个函数,区分下嵌入式大小字节序,区分系统是大端系统还是小端系统。(网上很多答案)

4.线程同步,两个线程,一个线程A,一个线程B,怎么能让AB顺序执行-例如都是A执行完B再执行

这个问题答的不是特别好,说了线程锁(线程安全),用消息队列,感觉没有应答到面试官想要的答案上,他一直问我还有没有什么方法,哈哈哈。

5.数据结构,问我用的比较多的数据结构,提问。

这个题我答得最烂了,我自我感觉没写过什么数据结构,他问我对对栈熟悉么,让我实现一个栈。

我没有面向对象的概念,对容器,栈的实现也不是很理解,最后面试官给我出了一个括号匹配的问题,看这个字符串是否非法

例如"abc{sdf}lksjgl()shiog[]“是匹配的,"abc{sdf}lksjgl)io]["是不匹配的。整个括号相对才叫匹配

我写了一个计数的例子,只能实现个数是否匹配,(面试官是想让我想想用数据结构实现),后来也没有很好解决,这方面自己要加强。

6.对上份工作主要内容,的一个描述。

总共耗时50min吧

二面:二面感觉是个技术大拿,对C语言中的关键点,编译等都有涉及,问的点也都很细。

1.工作内容的介绍,非常具体的要知道你都做了哪些工作。

2.多进程,多线程编程有哪方面的经验。

线程之间互相传递数据,线程安全,以及一面的人又问的线程同步,知道什么什么是条件变量吗?,条件变量怎么实现一个线程的等待。

3.Makefile,程序跑的太慢了,需要开启优化选项应该怎么做

4.经常程序用的调试方法,

我回答了我们现有产品的打印,创建文件夹输出日志。

接着问:如果程序正在运行,怎么调试,程序段错误的时候gdb怎么调试。

我的回答是编译一个非strip的版本,跑一下。面试官想问“有什么编译的优化选项能增加gdb的调试信息”,这个我没答出来。

5.编译选项 指定哪些库,头文件,-l -L -i分别是什么。

6.编译出来的程序链接到了哪些动态库,(我回答是用 LDD)

7.C语言中static有什么作用-----分别在函数层面,函数内容层面说明

7.1  static作用在函数层面会限制函数的作用域,然后又问了我如果两个同名的函数在不同的.c不加static会发生什么--我回答重定义

7.2 static在函数中的表现我说了后,他问我为什么!!!,为什么函数中的static变量不会反复初始化。----没答上来(然后又接着问这个值存在哪里,我刚开始说是栈,,,后来问我栈退出了资源不就释放了么,我没答出来存在哪里)

7.3如果在头文件里面写了一个static int a.两个.c文件都引用了,是否能编译通过,为什么。。。。在一个.c中修改a变量,再在另一个.c中的a变量值是否会有影响,如果去掉了static再做这个操作,会有什么影响。(这个问题我回头总结一篇博客吧,现场说了没有这么操作过,大概猜了几个答案)

8.现场写一段代码,函数 求 a^b

我写了一个简单的循环相乘,没有考虑b=0的情况,(当时感觉以为很简单,写的不是很完善,被指出来了)。。。装B失败

然后让我优化,我给了一个减少循环次数的方法,但是没有优化多少,面试官后来给我了一个方向 2^16 = (2^8)^2,让我按照这个思路优化一下,我勉强堆了一个答案吧。。。面试官应该不是很满意

二面结束,共耗时 30min吧

总结

1.旷视科技这两年融资很多钱,AI估值水涨船高,当然牛人也不少,我觉得我一个普通二本院校的学生能去面试应该是工作内容相关,安防行业工作做很多年,又找人内推了一下。

2.公司从我一个外人看来就是比较偏年轻有活力的那种。装修什么的也都很现代化,环境很好,小公司呆够了的人值得一试。

3.面试前还是要充分准备一下的,我当天电话约的第二天去面试,很是仓促,就看了以前自己总结的东西,如果网上有针对性的搜索一些面试题也挺好,这也是我写本篇blog的主要原因,因为专门的ai算法公司他们本身嵌入式岗位需求量不大,希望有相关需求的小伙伴可以早日找到理想的工作~~~

你可能感兴趣的:(面试)