【算法工程师】华为技术面面试记录

20220419华为技术面

面试岗位是算法工程师。

1.自我介绍

介绍了在学校的工作和负责的项目,以及自己的一些兴趣爱好。

面试官挑了一个项目进行提问:

  • 在项目中负责什么内容。
  • 遇到了什么困难?是怎么解决的?

2.算法题

剑指 Offer 61. 扑克牌中的顺子

从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。

示例 1:
输入: [1,2,3,4,5]
输出: True

示例 2:
输入: [0,0,1,2,5]
输出: True

限制:数组长度为 5 
数组的数取值为 [0, 13]
def isStraight(nums) -> bool:
    # 如果输入长度不为5,异常输入
    if len(nums)!=5:
        return False
    joker = 0
    # 数组排序
    nums.sort() 
    for i in range(4):
        # 统计大小王数量
        if nums[i] == 0: 
            joker += 1 
        # 若有重复,提前返回 false
        elif nums[i] == nums[i + 1]: 
            return False 
    # 最大牌 - 最小牌 < 5 则可构成顺子
    return nums[4] - nums[joker] < 5 

nums=[1,2,3,4,5]
print(isStraight(nums))
nums=[0,0,1,2,6]
print(isStraight(nums))
input=[0,0,1,2,5,6]
print(isShunZi(nums))

3.专业知识

3.1 数据结构

  • 数组和链表的区别?空间上有什么差异?
  • 栈、队列、优先队列、堆的特点有哪些?

3.2 计算机网络

说了目前学习的知识和Socket编程实验,说介绍了TCP三次握手和四次挥手。面试官还问了一下UDP,我说可以用在实时通讯中。

3.3 操作系统

说了现在正在学习Linux相关的知识,面试官没有继续追问。

3.4 设计模式

学过但是不记得了,面试官给我简单讲了一下。

3.5 机器学习

  • 机器学习应用的三个领域。不是很懂,说了图像处理、语音识别和NLP。
  • 设计一个电商推荐系统。我回答是根据收集的数据构建和不断更新用户画像,根据每个用户的特点进行推荐,没有提及具体的算法,因为没有接触过。

3.6 其他

  • C和C++的区别。回答了C++中的面向对象特点,没有讲清楚,后面得复习一下。
  • 会不会关注一些技术博客之类的。回答了最近吴恩达老师在知乎上创建了自己的账号,自己看了吴恩达老师的两篇回答受益颇多。

4.提问环节

我问了3个问题:

  • 该部门主要有哪些业务?面试官回答主要是围绕华为钱包的一些业务,设计支付、NFC等。
  • 跟深度学习相关的业务?面试官简要介绍了一下,也主要是跟支付相关的。
  • 入职会有相应的培训吗?面试官说有的。

猜你喜欢

转载自blog.csdn.net/weixin_46003347/article/details/124281921