华为 C/C++ OD 面试
机试
三道题, 100-100-200;
主要考C卷,网上有对应题库。(PS 听说4月换D卷了)。相对于leetcode会简单点。需要处理输入输出,建议刷几道牛客。目标院校150,非目标300。
感觉挺看运气,我的200分只是滑动窗口,听说有人100分题目就是深搜了(分糖果)。
业务面/部门面
问技术栈,主要考察你跟部门之间是否匹配,离职原因等。
这里我面了三家部门的业务面,这里感谢HR愿意帮我找不同部门,还帮我说了一些避雷的点。
个人感觉一个好的HR挺重要的,在群里有些HR不愿意帮你找只能自己找人求捞
(结尾安利小哥哥一波)。
技术一面
先自我介绍,对着技术栈 问了八股文
1.全局变量跟main函数哪个先初始化。
2.内存分布(全局变量区,堆,栈,代码区),指针跟引用的区别, 空类的大小(带函数,带对象), 内存对齐问题(#program pack 4 ),对long类型跟指针类型在不同平台大小不同。
const修饰函数的作用。
2.考察STL容器的理解(vector,list, deque,
map,multimap,set, multiset, unorderedmap, unorderedset),谈下底层实现,还有时间复杂度,还有迭代器的设计(分离数据结构跟算法)。迭代器种类(输入,输出,前向,双向,随机存取)
3.智能指针的分类使用( unique_ptr, share_ptr, weak_ptr),锁的分类使用(unique_lock, lock_guard)
4.多态的理解(指针、引用)运行时晚绑定。通过虚函数指针的虚表实现
5.虚函数能否时构造。不能,虚函数指针未构造
6构造跟析构能否抛异常,不能,可能内存泄漏
手撕: 一道字符串不断去重问题
aaabbccbcd 按3个相同字符串不断去重,得到d。
优化方式:栈
结果:这一面手撕出来了,但是八股好像不太理想,当时大部分精力在刷leetcode,对c的一些细节聊的不是很好,导致后面加面。
技术二面
主要深入项目,对项目的要点进行讨论,可能会要你提供性能的参数。主要考察是不是真的参与项目,这一面确实很细致。
手撕: 一道贪心算法
给出两个int数组,按赢面最大的排列得出A选手的排列。(田忌赛马)
A{0,2,3,4}, B{1,2,3,4}
得出A{2,3,4,0}
技术三面
因为一面八股没答好,进入到三面了
也是偏向项目,对项目进行讨论,也谈了锁,并发,线程的一些讨论,都是结合项目进行问答。
手撕,质因子
得到质因子排列
24=2 * 2 * 2 * 3
综合面:
离职原因, 家庭地址,未来方向等等。
面试结果: 已通过,
等offer发放,卡了30%, 上家薪资不太高,导致薪资在级别内算中等吧。本来还想争取多一k,失败了,不过也还可以接受吧。
HR vx: _wan_98
一个小哥哥