华为 2020暑期实习 面试回忆
作者:互联网
内容
- 项目
- 学过的专业课程
- 语言相关
- 网络
- 算法
项目
我提到试验室的一些测评项目,说到是涉密的之后,面试官就没再问了。。。不过其实也没有什么技术含量。
课程
提到了数据结构、计算机网络、OS、编译原理、c++这些。
Q:常用的寻路算法?哈夫曼树的原理以及应用?
A:答了dijkstra和prim算法,哈夫曼树通俗的说了一下。
语言相关
因为我比较熟悉c++,面试官本来想问Java问题的,也没继续问。。。
网络
Q:http和https的区别?
A:只准备了TCP/IP那一套。。。没想到问了http,说了https比http更安全。
算法
是一道LeetCode的经典接雨水题,20分钟当场写。做过比较久都忘了,只记得好像左右开始同时向中间遍历,写了一半发现答案不对,面试官给了思路每次找到左右最高柱小的那一个,然后计算当前柱子的雨水,我嘴欠说了一句这样复杂度有点高。。。面试官说肯定可以再优化,先按这个思路写。写完之后讨论了一下就结束了。
后来去LeetCode看到我以前的题解,emmm,思路是对的,当时就是先用数组保存了每个点左右的最大值,再进行遍历。
参考代码:
class Solution {
public:
int trap(vector<int>& height) {
if(height.size()==0)
return 0;
vector<int> highest_left(height.size());
highest_left[0] = 0;
vector<int> highest_right(height.size());
highest_right[highest_right.size() - 1] = 0;
int i = 1;
for (; i < highest_left.size() - 1; i++)
highest_left[i] = max(highest_left[i - 1], height[i - 1]);
for (i = highest_right.size() - 2; i >= 0; i--)
highest_right[i] = max(highest_right[i + 1], height[i + 1]);
int rain = 0;
for (i = 0; i < height.size() - 1; i++)
{
int lower = min(highest_left[i], highest_right[i]);
if (lower > height[i])
rain += lower - height[i];
}
return rain;
}
};
标签:面试官,right,暑期,height,华为,2020,left,highest,size 来源: https://blog.csdn.net/weixin_44826484/article/details/105610450