拼多多 (一面挂了)

算法题,买股票,最多交易2次,写不出来,写了一个最多交易1次的。 leetcode 121~123 题

项目问了一些,但是质疑我的 graph embedding 没有那么多收益,表示质疑。

字节面试 (一面挂了)

mind 召回 https://zhuanlan.zhihu.com/p/412108848

https://www.bilibili.com/video/BV1ig411o7t3?spm_id_from=333.337.search-card.all.click&vd_source=3bfb7e13187829d2bf213d6cab277b28

https://www.jianshu.com/p/88e5f4fc3fd7

回忆一下以前对于用户embedding的工作:

  • 协同过滤的隐向量。缺点:sparsity problem, 计算资源耗费大
  • 用单一向量表示用户embedding,然后输入MLP。缺点:bottleneck, 不能表示多样的用户兴趣
  • DIN模型使用attention来赋予不同历史商品不同的权重。缺点:计算极为耗时,只能用于ranking(千级数据排序),不能用于matching(亿级数据召回)。

创新点:

1、采用动态路由的机制来挖掘用户的多层次兴趣,丰富对于用户兴趣的表达
2、对于不同的用户兴趣采用label-aware attention layer来归纳兴趣的偏好

多兴趣抽取层 ,DSSM 是

https://zhuanlan.zhihu.com/p/360571560

20220706

寒武纪二面 (挂了)

问了很多c++细节

pytorch 和 tensorflow 的区别和联系

老生常谈 ,内存中的堆和栈 ?

能否不用堆,为什么要有堆内存空间 ?

家里要来客人了,我们要给客人们泡茶。如果规定只能在确定来几位客人之前就把茶泡好,这就会显得很尴尬:茶泡多了会造成浪费,泡少了怕怠慢了客人。所以,最好的方法就是等知道了来几位客人再泡茶,来几位客人就泡几杯茶。
然而,我们在使用数组的时候也会面临这种尴尬:数组的存储空间必须在程序运行前申请,即数组的大小在编译前必须是已知的常量表达式。空间申请得太大会造成浪费,空间申请得太小会造成数据溢出而使得程序异常。所以,为了解决这个问题,我们需要能够在程序运行时根据实际情况申请内存空间。

从浅拷贝问题到 free 为什么不能free多次

多次free和delete将会导致错误:

  1. 指针变量本身也是一个变量,它本身也占有内存空间,我们可以用内存中其它内存空间的地址为其赋值。倘若我们不给指针变量给他赋值,而是直接操作这个指针变量,编译器会报错的,因为编译器检测到该指针变量没有初始化,就会认为这是语法错误。所以,使用初始化后的指针变量才是有意义的。deletenew的目的就是在堆内申请一个内存,将这个内存空间的首地址赋给一个指针变量。
  2. free:一次free一个指针的时候,只是清空该指针所指的堆中的对应空间,但该指针变量在栈中的值并没有没清空,它还是指向原来分配的内存空间(但是该内存空间已经不属于该指针了,CPU随时可把该指针原来所指的空间分配给任何一个指针变量)。这时,再free一次时,由于该指针已经没有堆空间与之对应了,所以编译器将会提示出错。在C/C++编程时,mallocnew分配空间及freedelete释放空间是一个难点,这里很容易产生思维误区,所以在实际编程时需要千万注意手动分配的空间,要手动释放,万万不可多次释放同一堆空间。<br />————————————————<br /> <br />原文链接:[https://blog.csdn.net/xuyuqingfeng953/article/details/51106838](https://blog.csdn.net/xuyuqingfeng953/article/details/51106838)

为什么需要线程同步

20220705

早上面试了 BOSS直聘,部门交叉面,只面了35分钟,主要让我讲了讲 高德的项目和滴滴的项目,虽然问了一些问题,但是感觉整体面试节奏还是在掌握之中。

如下问题需要考虑一下如何回答:
graphsage 我不是关联一些异地poi吗, 面试官问我,这个东西放到 deepwalk 是不是也可以 ?
回答 :你就说需要加一个poi的其他特征 , 还有需要的不只是poi的emb,也需要user的

下午面了航空公司, 如下问题答得不够好

  1. 核酸检测分类问题,更看重 召回率 还是 准确率
    1. 首先召回率,准确率 怎么算的我都忘了
  2. https://blog.csdn.net/qq_22824431/article/details/111277942 算法题,或者智力题
  3. k 折 交叉 ,是训练一个模型还是 K 个模型
  4. 决策树类别特征如何处理

    K折交叉验证法

    在简单的交叉验证过程中,我们已经把原数据划分为训练集、验证集和测试集,但由于并不是所有的数据都参与了模型训练(至少验证集没有),因此就存在数据信息利用不全的弊端;此外,不同的划分结果也会导致模型不同的训练效果。

为了确保泛化误差的稳定性,从而得到理想的模型,我们就需要利用K折验证法,其一般流程如下:

(1) 将数据集分为训练集和测试集,测试集放在一边。

(2) 将训练集分为 k 份,每次使用 k 份中的1 份作为验证集,其他全部作为训练集。

(3) 通过 k 次训练后,得到了 k 个不同的模型。

(4) 评估 k 个模型的效果,从中挑选效果最好的超参数。

(5) 使用最优的超参数,然后将 k 份数据全部作为训练集重新训练模型,得到最终所需模型,最后再到测试集上测试。

20220704

阳光出行现场面试

CTO面试,主要还是讨论技术解决方案,基于简历中的项目

虾皮面试

首先是谈项目,所有项目都谈了一遍
机器学习算法基础问题: 哪些可以防止过拟合, gbdt 和 xgboost的区别
svm 和 神经网络区别 (这个没回答上来)
self-attention 原理讲一下 (讲了一些,但是感觉语言可以组织的更好)
算法题 : leetcode 链表题目 https://www.cnblogs.com/grandyang/p/4355505.html

面试官人很好,给我两个建议
一 说滴滴优惠券项目重要,简历应该写在前面
二不要总是说虾皮这边下班早 (问我为什么跳槽)

20220701

阳光出行现场面试

叮咚买菜

也是问项目,高德的和滴滴营销的项目
算法题 : 最长公共子序列,返回 长度即可 。 (这个题之前没有写,没有太关注,但是当时面试过程手写,而且一次就 AC了)