华为od技术一面面经(其实就是面试流水账)
================================
3月29日 技术一面 19:30-20:30
================================
本来约的19:00,HR说面试官还有个会没结束,推迟半小时开始。
然后19:30,面试官准时入会,居然有两个人入会了,所以说面试官有两个,这是出乎我意料的~~~
更加出乎我意料的是,我这边的麦克风居然不行!我本地试过录视频,能听到声音,我就以为没问题的。
我急急忙忙想办法解决……
先是看看电脑麦克风是不是关了--不是
又赶紧去找了手机的耳机插电脑上--不行
又看到录歌的耳机想试试--插不上
真是急死我了,都想着跟面试官说要不下次再面了。
面试官提议说用手机试试,看能不能邀请手机入会。(诶对呀 是个好方法)
我试了下,直接邀请不可行。
我立马打开手机,点开邮箱,点开会议链接,下载welink,输入会议id,入会。啊啊啊终于OK了!
赶紧跟面试官表示了歉意,面试官也挺好,说没事没事。那我们就开始面试。全程会录音录像哦。
开始面试……
1、面试官A:首先我们是C++开发岗哈,你先介绍下你是什么学校 专业 在学校有没有做过什么班干部 参加过什么比赛 获过什么奖 。
我:**大学通信工程专业。(什么时候毕业的)2019年。做过团支书。绩点3.9。通过大学英语六级。连续三年获得奖学金。被评为优秀毕业生、优秀党员。
参加全国英语知识竞赛获得三等奖。(没有参加技术类的竞赛吗)参加过学校组织的电子科技大赛,不过因为是大一的时候参加的,只需要出创意idea,不用做出实物来。
2、面试官A:那说说你的工作经历吧,做了什么项目。
我:我目前有两年的C++开发经验。上一份工作在**,从事**产品视频子系统的开发和软件架构重构工作。
我主要负责的是开发者测试框架搭建,以及视频编解码相关特性开发。
3、面试官A:说说你的这个项目主要用到了什么技术栈。
我:我们做的是终端软件架构重构的项目。为了能提高产品的开发性并且融入华为鸿蒙生态,就决定将原有1.0产品的安卓嵌入式架构,重构为鸿蒙系统架构。
芯片也做了升级,采用了图像处理性能更好的海思**芯片。
而对于视频子系统,视频在Hal层有个VideoProxy服务,去适配海思接口,根据芯片特性设计视频链路,包括输入输出链路、编解码链路等;
系统层的话,需要提供接口供上层应用调用,比如视频的上层是媒体控制,需要提供编解码、HDMI预览等能力。
我个人的话,在特性开发方面主要负责动态壁纸码流解码显示特性。
另外还负责视频子系统的开发者测试,原来1.0的时候整个项目都是没有正儿八经地搞开发者测试的,所以重构引入了开发者测试,这一块主要是我来做。(接下来我没有具体说做了什么,因为觉得好像说了挺多话了,想等他问再继续说,结果他也没往下问,害,早知就自己说了)
4、面试官A:那你整个项目大概输出多少代码量
我:特性开发方面大概输出5k,开发者测试框架搭建和用例方面大概2-3k,另外还有一些bug修复的零散代码大概1-2k吧。
5、面试官A:这个项目做了多久?
我:从2020年8月份到现在还在做。我参与的话就是一年半左右吧。
(那一年半的话7-8k的代码量也不是很多啊)因为是这样的,我们这个项目是重构嘛,一开始很长一段时间,大概是直到tr3吧,都是做特性分析设计、画流程图、写文档之类的工作,所以是没有代码产出的。(哦哦~~)
6、面试官A:好,那到问一些C++的基础知识吧。B,你来问吧。
面试官B:你说说多态吧。
我:多态是C++三大特性之一。多态一般和继承搭配使用。比如我们父类声明虚函数,子类继承的时候就可以去重新规定他的行为。
再比如函数重载,也体现了多态特性,重载就是当参数个数不同或者类型不同,构成不同函数,那么每个函数也可以有自己的行为。
7、面试官B:那你说说虚函数和纯虚函数
我:纯虚函数就是比如前面声明virtual然后后面=0,就是纯虚函数,纯虚函数的话,子类继承的时候是必须要重新实现的,而虚函数的话没这个规定。
8、面试官B:你说说STL吧。
我:STL的话就是包含了一些容器,然后容器里面的迭代器,以及配合使用的一些算法。常用的STL有比如vector,list,set,map,stack等等。
9、面试官B:你具体说说这些容器的区别吧,平时都用过哪些容器,什么时候选择用什么容器。
我:首先vector的话空间是连续的,插入的话只能从最后插入,如果想要从中间插入,需要拷贝然后重新分配空间。
list的话空间是不连续的,插入效率会比较高。
还有map,哈希表,里面存放的元素是键值对的形式,如果需要频繁查找的话,可以选用map,因为它可以根据key值查找,效率比较高。
还有stack,栈,栈的话最大的特点是后进先出,一般用在符号匹配,比如括号匹配的时候,一般可以用stack。
还有队列queue,它的特点是输出的那头只能输出,输入那头只能输入,虽然两头都是开口的。就像排队。
嗯,大概就这样。
10、面试官B:emmm……好,我没什么问题了。
面试官A:那我们来做道题吧。我共享下屏幕。(然后给我读题,并且让我不要截图哦)(读读读读……)好,可以没
我:我再仔细看看题。(可以我们就开始了哈,你共享下屏幕,写一下)
题目其实不难,思路也不难想出来,但是我脑子当时好乱,好难集中注意力,脑子总有一个奇怪的东西干扰我(啊啊啊啊怎么做怎么做我能做出来吗做不出来怎么办这个怎么搞)
想了大概十分钟,我跟面试官说,我能想到大概的思路,但是脑子有点乱(这时候其实我居然有点想放弃,想着就讲讲思路,不写了,蒙混过关)。我跟面试官说了我的思路,用滑动窗口怎么怎么的。
面试官A:没事不着急,慢慢想。你可以先试着看能不能用暴力解出来。找出所有可能的面积,然后再找出最大的。写一下,可以吗?
哎,没能让我混,我一时间不知道说什么,安静了。(痛苦ing)
面试官A:写一下吧。
我:好。
(我居然没想到用暴力,好傻。其实暴力一下子可以秒了。然后几分钟我就写出来。调试了下,没问题。)
面试官A:看看还能不能优化下算法。
我好歹做出来了,所以这时心里一下子轻松了很多,就好好想了滑动窗口的思路。
结果没一会儿就想出来了。跟面试官说了我的思路。面试官也认可了。我还以为会让我写出来,结果没有,他说就这样差不多了。
#华为OD面试##面经##C/C++##社招#
3月29日 技术一面 19:30-20:30
================================
本来约的19:00,HR说面试官还有个会没结束,推迟半小时开始。
然后19:30,面试官准时入会,居然有两个人入会了,所以说面试官有两个,这是出乎我意料的~~~
更加出乎我意料的是,我这边的麦克风居然不行!我本地试过录视频,能听到声音,我就以为没问题的。
我急急忙忙想办法解决……
先是看看电脑麦克风是不是关了--不是
又赶紧去找了手机的耳机插电脑上--不行
又看到录歌的耳机想试试--插不上
真是急死我了,都想着跟面试官说要不下次再面了。
面试官提议说用手机试试,看能不能邀请手机入会。(诶对呀 是个好方法)
我试了下,直接邀请不可行。
我立马打开手机,点开邮箱,点开会议链接,下载welink,输入会议id,入会。啊啊啊终于OK了!
赶紧跟面试官表示了歉意,面试官也挺好,说没事没事。那我们就开始面试。全程会录音录像哦。
开始面试……
1、面试官A:首先我们是C++开发岗哈,你先介绍下你是什么学校 专业 在学校有没有做过什么班干部 参加过什么比赛 获过什么奖 。
我:**大学通信工程专业。(什么时候毕业的)2019年。做过团支书。绩点3.9。通过大学英语六级。连续三年获得奖学金。被评为优秀毕业生、优秀党员。
参加全国英语知识竞赛获得三等奖。(没有参加技术类的竞赛吗)参加过学校组织的电子科技大赛,不过因为是大一的时候参加的,只需要出创意idea,不用做出实物来。
2、面试官A:那说说你的工作经历吧,做了什么项目。
我:我目前有两年的C++开发经验。上一份工作在**,从事**产品视频子系统的开发和软件架构重构工作。
我主要负责的是开发者测试框架搭建,以及视频编解码相关特性开发。
3、面试官A:说说你的这个项目主要用到了什么技术栈。
我:我们做的是终端软件架构重构的项目。为了能提高产品的开发性并且融入华为鸿蒙生态,就决定将原有1.0产品的安卓嵌入式架构,重构为鸿蒙系统架构。
芯片也做了升级,采用了图像处理性能更好的海思**芯片。
而对于视频子系统,视频在Hal层有个VideoProxy服务,去适配海思接口,根据芯片特性设计视频链路,包括输入输出链路、编解码链路等;
系统层的话,需要提供接口供上层应用调用,比如视频的上层是媒体控制,需要提供编解码、HDMI预览等能力。
我个人的话,在特性开发方面主要负责动态壁纸码流解码显示特性。
另外还负责视频子系统的开发者测试,原来1.0的时候整个项目都是没有正儿八经地搞开发者测试的,所以重构引入了开发者测试,这一块主要是我来做。(接下来我没有具体说做了什么,因为觉得好像说了挺多话了,想等他问再继续说,结果他也没往下问,害,早知就自己说了)
4、面试官A:那你整个项目大概输出多少代码量
我:特性开发方面大概输出5k,开发者测试框架搭建和用例方面大概2-3k,另外还有一些bug修复的零散代码大概1-2k吧。
5、面试官A:这个项目做了多久?
我:从2020年8月份到现在还在做。我参与的话就是一年半左右吧。
(那一年半的话7-8k的代码量也不是很多啊)因为是这样的,我们这个项目是重构嘛,一开始很长一段时间,大概是直到tr3吧,都是做特性分析设计、画流程图、写文档之类的工作,所以是没有代码产出的。(哦哦~~)
6、面试官A:好,那到问一些C++的基础知识吧。B,你来问吧。
面试官B:你说说多态吧。
我:多态是C++三大特性之一。多态一般和继承搭配使用。比如我们父类声明虚函数,子类继承的时候就可以去重新规定他的行为。
再比如函数重载,也体现了多态特性,重载就是当参数个数不同或者类型不同,构成不同函数,那么每个函数也可以有自己的行为。
7、面试官B:那你说说虚函数和纯虚函数
我:纯虚函数就是比如前面声明virtual然后后面=0,就是纯虚函数,纯虚函数的话,子类继承的时候是必须要重新实现的,而虚函数的话没这个规定。
8、面试官B:你说说STL吧。
我:STL的话就是包含了一些容器,然后容器里面的迭代器,以及配合使用的一些算法。常用的STL有比如vector,list,set,map,stack等等。
9、面试官B:你具体说说这些容器的区别吧,平时都用过哪些容器,什么时候选择用什么容器。
我:首先vector的话空间是连续的,插入的话只能从最后插入,如果想要从中间插入,需要拷贝然后重新分配空间。
list的话空间是不连续的,插入效率会比较高。
还有map,哈希表,里面存放的元素是键值对的形式,如果需要频繁查找的话,可以选用map,因为它可以根据key值查找,效率比较高。
还有stack,栈,栈的话最大的特点是后进先出,一般用在符号匹配,比如括号匹配的时候,一般可以用stack。
还有队列queue,它的特点是输出的那头只能输出,输入那头只能输入,虽然两头都是开口的。就像排队。
嗯,大概就这样。
10、面试官B:emmm……好,我没什么问题了。
面试官A:那我们来做道题吧。我共享下屏幕。(然后给我读题,并且让我不要截图哦)(读读读读……)好,可以没
我:我再仔细看看题。(可以我们就开始了哈,你共享下屏幕,写一下)
题目其实不难,思路也不难想出来,但是我脑子当时好乱,好难集中注意力,脑子总有一个奇怪的东西干扰我(啊啊啊啊怎么做怎么做我能做出来吗做不出来怎么办这个怎么搞)
想了大概十分钟,我跟面试官说,我能想到大概的思路,但是脑子有点乱(这时候其实我居然有点想放弃,想着就讲讲思路,不写了,蒙混过关)。我跟面试官说了我的思路,用滑动窗口怎么怎么的。
面试官A:没事不着急,慢慢想。你可以先试着看能不能用暴力解出来。找出所有可能的面积,然后再找出最大的。写一下,可以吗?
哎,没能让我混,我一时间不知道说什么,安静了。(痛苦ing)
面试官A:写一下吧。
我:好。
(我居然没想到用暴力,好傻。其实暴力一下子可以秒了。然后几分钟我就写出来。调试了下,没问题。)
面试官A:看看还能不能优化下算法。
我好歹做出来了,所以这时心里一下子轻松了很多,就好好想了滑动窗口的思路。
结果没一会儿就想出来了。跟面试官说了我的思路。面试官也认可了。我还以为会让我写出来,结果没有,他说就这样差不多了。
OK!面试结束!over! over!
(最后说一句:从我的回答不难看出,我就是个渣渣!🙄所以,大家对我的回答别太在意哈,我就是实事求是地记录下面试过程哦😅)
#华为OD面试##面经##C/C++##社招#