华为无线面经(9.18)
一面(50分钟):
手撕代码:快速排序
因为写的比较快,面试官简历还没看完就又让写了个非递归快排。写完之后开始问快排的优化,我就说了一下初值的选择可以优化,正常选左边第一个,但我们可以选3个,5个,再在这些里面选初值,或者用系统随机生成左值来优化。然后我又展开了讲了一下c++里面的快排其实不单纯是快排,而是一种基于快排的复杂排序,然后具体说了下原理,然后分析了下为什么库函数的快拍的时间复杂度可以近似看成nlogn而不太可能是最坏复杂度n方。
面试官听完之后又说那要是数组里面的元素不是整形元素呢?怎么优化?
我说写一个比较函数,运用模板的思想解决就可以实现了,简单说了下模板怎么实现
然后就是聊项目,挨个问,问的很细,面试官在讲的过程中会不断的打断问他感兴趣的问题(总之就是项目一定要透)
二面(40分钟):
撕代码:杨辉三角的最短路径(DP)问题
写完之后跟面试官先讲了思路,包括状态表示,状态转移,边界条件以及这道题针对三角形的边左右方向转移不可达得问题。
然后面试官说一起看代码,在最小值那里我是直接输出的dp(n)(m),貌似面试官不太了解为什么,然后我就解释了一下,面试官貌似还是不太理解,我说这个可以用数学归纳法证,我可以试着给你写一写。又沟通了几次无果,果断放弃跟面试官说我用枚举写吧,然后就写完了。
紧接着就是聊项目,依旧是问的非常细致,面试官直接说你就当我是小白,然后讲给我听
因为中间因为那个最后输出结果的问题跟面试官争执了一下,差点以为自己跪了
三面(30分钟):业务组长面
很常规的介绍了一个项目,然后就是说无线部门强度大之类之类的,让我做好心理准备之类的,然后还聊了一些常规的hr问题