2021秋招-搜狗-面试总结

1 minute read

Published:



你是第位访客~ ٩(๑^o^๑)۶ Σ(っ °Д °;)っ被你发现了!

搜狗 智能图像识别-图像算法研究员 面经

部门概况:部门主要是负责输入法以及多模态融合相关业务,具体面试官好像没怎么说。视觉团队大概 30-40 人。 大视觉团队包含三个大的方向:感知组(人脸、手势识别,分身),OCR 组(印刷体,图表等文字识别,录音笔、词典笔、同传等场景),手写识别组(输入法里的手写输入,公式) 正常 3 轮技术面+HR 面。有机会解决北京户口,搜狗要被腾讯收购了,后期可能拿到的是腾讯 PCG 的 offer。

一面 (2020 年 9 月 19 日)

  • 自我介绍
  • 两篇论文的介绍
  • 项目介绍
  • RNN 的求导
  • SENet
  • Faster-RCNN 的结构,RPN 的详细流程
  • Cascade-RCNN
  • ROI-Align 是在哪里提出来的
  • 对 Mask-RCNN 有了解吗
  • Attention 机制怎么实现
  • RNN 到 LSTM 到 Transformer 的发展脉络
  • LSTM 里的激活函数为啥不用 ReLU
  • Resnet 的基础结构,残差连接的作用,从梯度计算上说明
  • Feature map 大小跟 kernel,stride padding 的关系

二面(2020 年 9 月 23 日)

  • 介绍了一下腾讯的实习经历
  • 基础知识
  • ROC 曲线和 PR 曲线的区别
  • ROC 曲线的横纵坐标分别是啥?
    • 横坐标是 False Positive Rate,纵坐标是 True Positive Rate。
  • 负样本明显数倍于正样本的时候的分类问题通常使用哪种评价指标,为什么?

    • 用 ROC 曲线,因为 PR 曲线存在不稳定问题
  • 进程和线程的区别
  • 死锁的概念
  • LRU 的原理和作用
  • RNN 中使用的是什么激活函数?
  • LSTM 中为什么不使用 ReLU 作为激活函数?

    • 实际上 RNN 和 LSTM 中有人使用 ReLu 作为激活函数,而且貌似效果还不错。
  • 算法题
'''
链式A+B
限定语言:Python、C++、C#、Java
有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。

给定两个链表ListNode* A,ListNode* B,请返回A+B的结果(ListNode*)。

测试样例:
{1,2,3},{3,2,1}
返回:{4,4,4}
'''
# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Plus:
    def plusAB(self, a, b):
        # write code here
        if a is None:
            return b

        if b is None:
            return a
        head=ListNode(0)
        p=a
        q=b
        k=head
        t=0
        while p is not None and q is not None:
            cur=p.val+q.val+t
            t=cur//10
            cur-=t*10
            cur_node=ListNode(cur)
            k.next=cur_node
            k=k.next
            p=p.next
            q=q.next

        if q is not None:
            p=q
        while p is not None:
            cur=p.val+t
            t=cur//10
            cur-=t*10
            cur_node=ListNode(cur)
            k.next=cur_node
            k=k.next
            p=p.next
        if t==1:
            cur_node=ListNode(1)
            k.next=cur_node

        return head.next

算法题 2

'''
顺时针打印矩阵
限定语言:Python、C++、C#、Java
对于一个矩阵,请设计一个算法从左上角(mat[0][0])开始,顺时针打印矩阵元素。

给定int矩阵mat,以及它的维数nxm,请返回一个数组,数组中的元素为矩阵元素的顺时针输出。

测试样例:
[[1,2],[3,4]],2,2
返回:[1,2,4,3]
'''
# -*- coding:utf-8 -*-
class Printer:
    def clockwisePrint(self, mat, n, m):
        # write code here
        directions=[(0,1),(1,0),(0,-1),(-1,0)]
        idx=0
        visited=[[0]*m for i in range(n)]
        cnt=0
        x,y=0,0
        result=[]
        while cnt<n*m:
            result.append(mat[x][y])
            visited[x][y]=1
            dx,dy=directions[idx]
            nx=x+dx
            ny=y+dy
            if not (nx>=0 and nx<n and ny>=0 and ny<m and visited[nx][ny]==0):
                idx=(idx+1)%4
                dx,dy=directions[idx]
                nx=x+dx
                ny=y+dy
            x=nx
            y=ny
            cnt+=1
        return result

三面 (2020年10月23日)

面试官应该是组里的大leader,聊了接近2个小时,主要是聊了一些实习的经历,以及每片文章的一个主要的contribution之类的。聊得问题比较宽泛,没有具体到很细节的问题上。 面试官表示整个公司可能就只有十几个户口指标,后续的话是否有户口需要看面试排名,暂时无法确定。

HR面(2020年10月28日)

HR面主要聊的是项目经历以及做了什么事情,总体30分钟左右。