面经总结系列(九): Boss 直聘算法工程师

时间:2024-10-12 07:20:59

在这里插入图片描述

????‍????作者简介: ****、阿里云人工智能领域博客专家,新星计划计算机视觉导师,百度飞桨PPDE,专注大数据与AI知识分享。✨公众号:GoAI的学习小屋 ,免费分享书籍、简历、导图等,更有交流群分享宝藏资料,关注公众号回复“加群”或➡️点击链接 加群。

????AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于 前沿论文解读、资料共享、行业最新动态以、实践教程、求职相关(简历撰写技巧、面经资料与心得)多方面综合学习平台,强烈推荐AI小白及AI爱好者学习,性价比非常高!

扫码加入星球:
在这里插入图片描述

????AI面经专栏总结: 本专栏主要为总结各小中大厂的面经系列总结,内容涵盖了多个热门技术领域,包括但不限于算法、机器学习、CV、NLP、大模型、测开、大数据、数分等,内容包括问题及详细答案,此外金邀请了行业内经验丰富的技术专家和面试官,分享面试经验和技巧,帮助求职者顺利通关各类技术面试。

算法工程师面经系列

boss 直聘 算法工程师 一面 60 min

最近参加校招,面试了多家公司,软件开发和算法岗都有投递。感觉最近算法岗的趋势越来越卷了,都要3-4轮面试,过了还有HR面试、主管面,泡池子,排序,难度系数在逐年可见的递增。然后基于自己想将面试的内容记录下来并且将文章传播出去的原因来和大家分享一下自己的其中几家公司面经,这篇文章介绍的是boss直聘公司的岗位面经。在boss直聘的官网上投递的校招岗位,岗位名称叫算法工程师,面试的时候才知道业务是做推广搜的,国庆前就做了笔试,笔试难度中等,编程题有4道,都做出来了,笔试考察的知识点主要是树+搜索+动态规划。但是面试开启的较晚,11月才开始收到面试通知。笔试时间是9.28,一面是11.06,二面是11.08,效率很快。一面自己答的不是很好,幸运的过了,总共3-4轮技术面。工作地点在北京。但是战线拉的比较长,投递这个公司可能需要做好一定的心理准备。以下是第一轮和第二轮技术面的内容。答案是我自己的想法和面试后自己查的资料的结合,不保证100%准确,可以参考看看。

  1. 项目介绍 20min
    我有4段算法岗相关的实习,两家自动驾驶独角兽,两家互联网,最近的暑期实习在某中厂实习,但是我做的时间都不够长,基本都是两个月多,偏工程,大部分时间在处理数据,模型层面深入的有限。但是也只能如实相告,面试官大部分都会理解的,因为实习时间短暂,一般很难有高质量的产出,哪怕是在大厂。
  2. 画出Lstm的结构图,并进行说明
    在这里插入图片描述

从左到右依次是遗忘门、输入门、输出门。
遗忘门决定了哪些内容与前面的时间步相关。
输入门决定了从当前时间步添加哪些信息。
输出门决定下一个隐藏状态应该是什么。

  1. Lstm用的激活函数是什么?相比sigmoid有什么优势?
    Tanh激活函数。
    (1) tanh函数是0均值,值域是[-1, 1],与Sigmoid函数相比,它的输出范围更广,能够提供更强的梯度,从而有助于缓解梯度消失问题。
    (2) 与Sigmoid相比,tanh激活函数在处理序列数据时通常能够更好地捕捉梯度信息。这对于LSTM等递归神经网络(RNN)来说尤其重要,因为它们需要在长序列上有效地传播梯度。

  2. 介绍Rcnn。为什么它速率较慢。
    (1) 候选区域提取的计算成本高: 选择性搜索等传统方法用于生成候选区域的过程相对较慢,这限制了整体速度。
    (2) 多次前向传播: RCNN需要对每个候选区域进行单独的前向传播,这增加了计算开销。

  3. C++内存泄露的原因
    (1) 未释放动态分配的内存;
    (2) 释放内存的顺序错误;
    (3) 未释放动态数组;
    (4) 指针丢失, 在后续的代码中修改了该指针的值,导致无法再释放对应的内存
    (5) 异常处理不当, 在发生异常的情况下没有正确地释放分配的内存

  4. Python哪些对象是可变的,哪些是不可变的,怎么判断
    可变: list set dict
    不可变: int float str tuple
    判断对象的可变性:
    (1) 可以使用id()函数来获取对象的标识符,然后通过改变对象的值,再次检查标识符是否发生变化,从而判断对象是否可变,如果标识符发生变化,说明对象是不可变的。
    (2) 判断是否可以作为dict的键,可以就是不可变的

  5. Coding
    y = ([1, 1, 1, 1, 0, 1, 0, 0, 0, 0])
    pred = ([0.9, 0.8, 0.7, 0.6, 0.6, 0.4, 0.4, 0.3, 0.2, 0.1])
    计算auc
    参考:
    AUC的三种计算方法及代码_auc计算-****博客
    AUC详解与Python实现 - 知乎

import numpy as np

y = np<