首页 > 华为OD社招 C++ 技术二面
头像
穷人的代表
编辑于 2021-07-17 18:26
+ 关注

华为OD社招 C++ 技术二面

5.29谈薪  6.4综面   口头offer 6.19正式邮件offer 三倍当前工资 从接到电话到拿offer 历时55天 至此全剧终
技术一面及上机考试内容 移步

我的心好冷........
手撕代码环节 ,考了leetcode 207 原题 拓扑排序+领接表+DFS/BFS 没做过这种题 一点思路都没有搞不出来,换了道简单题做出来了
如题:
你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。
在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程  bi 。
例如,先修课程对 [0, 1] 表示:想要学习课程 0 ,你需要先完成课程 1 。
请你判断是否可能完成所有课程的学习?如果可以,返回 true ;否则,返回 false 。
贴代码学习
class Solution {
public:
    bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
        vector<int> degrees(numCourses);//记录所有顶点的入度,未初始化的为0
        vector<vector<int>> adjacents(numCourses); //邻接表
        queue<int> zero;//零入度的顶点
        int num = numCourses;
        for(int i=0;i<prerequisites.size();i++)
        {
            degrees[prerequisites[i][0]]++;//入顶点
            adjacents[prerequisites[i][1]].push_back(prerequisites[i][0]);//出顶点
        }
        for(int i=0;i<numCourses;i++)
            if(degrees[i]==0){
                zero.push(i); //入度为0的先入队列
                num--;
            }
                
        while(!zero.empty()){
            int temp = zero.front();
            zero.pop();
            for(int j=0;j<adjacents[temp].size();j++)
                if(--degrees[adjacents[temp][j]]==0){
                    zero.push(adjacents[temp][j]);
                    num--;
                }
                    
        }
        if(num==0)
            return true;
        return false;
    }
};
要求换题,题目是用队列实现栈 ,这个比较简单,怎么做都可以 算是给个台阶下

流程走到第四步了 两轮视频面试下来,总结一下:
1. 对于社招只问项目问题,语言的东西只字不提(语言是考没经验的应届生的),所以这方面几乎可以不用准备,(对了,要注意代码风格和命名规范,当然,面向对象的思想要有自己的理解);
2. 描述项目的时候,确保你讲的每个字都都能给出合理的解释,面试官的耳朵真的是厉害,专门听漏洞的,抓到一个概念你没圆上来就露馅了......我以后再也不像个Sb的去讲什么软硬件解耦,高内聚低耦合了,讲不清楚的时候在面试官面前就像没穿衣服一样,真的社死一般的遭遇;
3. 总的来说,要想通过华为的面试,要做五道编程题,耗时三个小时左右的面试和测试(时间总和),以及长达一个月甚至更长的流程;
4. 单单说一下五道编程题,对使用C++的你来说要掌握到什么程度才有可能全部通过,要熟练掌握STL标准库,能熟练的处理数组和字符串,数据结构要掌握到非线性结构---图这种程度,算法上熟练运用DFS/BFS,递归,贪心回溯等等,要能运用他们解决各种变种问题,以及有些实际生活问题是可以抽象成树或者是图的问题,而不只是会遍历树和图,当然解决这些问题的前提是会遍历。

tip: 有很多人说考试不会处理输入输出,这个确实,这个真的得练啊,还有就是刷题的时候是连接口都给你封装好了,有点傻瓜编程的意思,可能面试的时候让你自己封装一个类都不会,我当时就是自己封装的,这里也能考察你的封装思想,函数思想,接口思想,再有就是有的测试用例是要自己写的,你会不会写 ?

希望对各位有帮助 ,希望你们勇攀高峰!

更多模拟面试

全部评论

(10) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

近期精华帖

热门推荐