【华为2019届校园招聘】算法工程师面试总结

我的个人微信公众号:Microstrong

微信公众号ID:MicrostrongAI

公众号介绍:Microstrong(小强)同学主要研究机器学习、深度学习、计算机视觉、智能对话系统相关内容,分享在学习过程中的读书笔记!期待您的关注,欢迎一起学习交流进步!

知乎专栏:https://zhuanlan.zhihu.com/Microstrong

Github:https://github.com/Microstrong0305

个人博客:https://blog.csdn.net/program_developer

一面:

(1)自我介绍。

(2)两篇论文中最好的一篇文章,是怎么做的,把具体的原理讲一下?

我就把论文中的主要创新点和对LSTM模型的改进详细的进行介绍。

(3)你能否详细的介绍LSTM模型的结构和内部的运行过程?

我就把LSTM的模型画出来,然后详细的讲解了LSTM的运行机制。

(4)简单的介绍一下RNN,及它的发展和应用?

回答:RNN可以解决时间序列的问题,因为RNN的隐含层是循环层,可以记忆之前输入到网络中的数据信息。它可以解决含有时间序列特性的问题,比如:股票预测、文本生成、对话系统等。由于传统的循环神经网络存在梯度消息和梯度爆炸的问题,因此研究者提出了LSTM,它由于含有遗忘门、输入门、输出门等可以解决梯度消失的问题。但是现在经常使用的是GRU(Gate Recurren Unit,门控循环单元)网络,它只有两个门,分别为更新门和重置门。更新门用于控制前一时刻的状态信息被带入到当前状态中的程度,更新门的值越大说明前一时刻的状态信息带入越多。重置门用于控制忽略前一时刻的状态信息的程度,重置门的值越小说明忽略得越多。GRU简化了LSTM的各个门,把LSTM中的遗忘门和输入门合并成更新门,GRU也合并了细胞状态和隐层状态等。

(5)简单的介绍一下CNN,及它的发展和应用?

回答:在图像处理中,卷积神经网络提取的特征比之前的手工特征效果更好,这是由CNN特殊的组织结构来决定的,卷积层和池化层的共同作用使得CNN能提取出图像中较好的特征。

一般而言,卷积层和池化层交替出现构成了CNN的低层,高层则为1~2层的全连接层,最后一层输出层通常为分类器,例如逻辑回归(LR)、支持向量机(SVM)、Softmax回归等等。

卷积层的作用:在卷积层中,通常包含多个可学习的卷积核,上一层输出的特征图与卷积核进行卷积操作,即输入项与卷积核之间进行点积运算,然后将结果送入激活函数,就可以得到输出特征图。卷积核是CNN对图像特别work的主要原因。我们可以把每个卷积核当成是一个学生,每个学生看一幅画时关注的地方不一样,也就是每个卷积核提取图片的特征都不一样,因此CNN可以很好的提取图片的特征,对图像处理work比较好。

池化层作用:池化层通常出现在卷积层之后,二者相互交替出现,并且每个卷积层都与一个池化层一一对应。池化层降低了特征的维度,从而避免过拟合,同时还使得池化输出的特征具有平移不变性。

(6)数据结构中查找最快的算法是哪个?

我:您问的查找算法,是在数据量比较大的情况下,还是在数据量比较小的情况下?

面试官:分别说一下在数据量比较大的情况下最快的查找算法,和数据量比较小的情况下最快的查找算法。

其实这道题面试官想让我回答“哈希表查找”。

我当时回答了一个“二分查找”、“二叉排序树”。

面试官问:二分查找的时间复杂度是多少?

我:O(lg(n))

面试官:lg(n)是以10为底的吧!这样写对么?

我:赶紧把之前写的改正了一下,老老实实,规规整整的写下O(\log_2n)。注意:面试的时候,一定要细心仔细。

面试官问:二叉排序树的时间复杂度是多少?

我:O(\log_2n)。

面试官:看来你真的不知道查找最快的算法了。

面试官:那三叉排序树、四叉排序树的时间复杂度呢?

我:其实我内心是想说O(\log_3n),O(\log_4n)。但是没有把握,就没说。就告诉面试官:这个之前没有考虑过。

(7)了解Java里面的集合么?

我:了解。就大概把下面的这幅图给描述了一下:

面试官:查找HashMap中的一个数据的时间复杂度是多少?查找TreeMap中的一个数据的时间复杂度是多少?

我:HashMap的底层实现是哈希表的查找,时间复杂度是O(1)。TreeMap的底层实现是树结构,时间复杂度是O(\log_2n)。

所以HashMap的查找速度更快。

一面完。

二面:

(1)自我介绍。

(2)详细介绍一下,你项目中是如何进行图像水印的处理工作?

我就把项目中每一步用到的所有方法都详细的讲解了一遍。论文《On the Effectiness of Visible WaterMarks》。

(3)你平时是怎么看论文的?

涉及到我目前要做的工作的文章,我都会拿过来看看,研究论文中的创新点和方法,然后复现论文中的实验结果。最后,我会总结论文形成读书笔记,笔记里包含我对这篇论文的理解和感想。然后发表到我的博客、知乎专栏、和微信公众号中。

(4)你对RNN了解么?简单介绍一下RNN网络?

(5)你能详细介绍LSTM的内部结构和运行原理么?

我就在纸上边画LSTM网络结构,边写每个门设计到的公式,然后讲解每个门的作用。

(6)你期望的工作地点是哪里?

(7)你未来的职业规划是什么?

由于刚出校门,自己知识技能和工作经验都不是很丰富,我希望在未来一两年内,脚踏实地的学好工作技能、提升技术能力、丰富工作经验。把这些做好之后,后面的升职加薪就是水到渠成的事情。

二面完。

发布了285 篇原创文章 · 获赞 892 · 访问量 111万+

猜你喜欢

转载自blog.csdn.net/program_developer/article/details/82995127