拼多多 (一面挂了)
算法题,买股票,最多交易2次,写不出来,写了一个最多交易1次的。 leetcode 121~123 题
项目问了一些,但是质疑我的 graph embedding 没有那么多收益,表示质疑。
字节面试 (一面挂了)
mind 召回 https://zhuanlan.zhihu.com/p/412108848
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将会导致错误:
指针变量本身也是一个变量,它本身也占有内存空间,我们可以用内存中其它内存空间的地址为其赋值。倘若我们不给指针变量给他赋值,而是直接操作这个指针变量,编译器会报错的,因为编译器检测到该指针变量没有初始化,就会认为这是语法错误。所以,使用初始化后的指针变量才是有意义的。delete和new的目的就是在堆内申请一个内存,将这个内存空间的首地址赋给一个指针变量。free:一次free一个指针的时候,只是清空该指针所指的堆中的对应空间,但该指针变量在栈中的值并没有没清空,它还是指向原来分配的内存空间(但是该内存空间已经不属于该指针了,CPU随时可把该指针原来所指的空间分配给任何一个指针变量)。这时,再free一次时,由于该指针已经没有堆空间与之对应了,所以编译器将会提示出错。在C/C++编程时,malloc和new分配空间及free和delete释放空间是一个难点,这里很容易产生思维误区,所以在实际编程时需要千万注意手动分配的空间,要手动释放,万万不可多次释放同一堆空间。<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的
下午面了航空公司, 如下问题答得不够好
- 核酸检测分类问题,更看重 召回率 还是 准确率
- 首先召回率,准确率 怎么算的我都忘了
- https://blog.csdn.net/qq_22824431/article/details/111277942 算法题,或者智力题
- k 折 交叉 ,是训练一个模型还是 K 个模型
- 决策树类别特征如何处理
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了)
