记录一下自己艰苦的2020秋招---累觉不爱
惨淡8月
8月份就是正式的秋招心路历程了,目前手里的大部分offer也是8月份提前批给到的,说不痛苦都是假的,从开始的不断被否定,到陆续自信,再到查漏补缺,项目完善,每一次面试都是对自己的一次打磨,从臭石到璞玉,犹如鞭尸般痛楚,但最终希望能如凤凰般涅槃。天很高,云很近,路也很长,用半年的时间去追赶别人几倍的知识积累沉淀,学的又多又繁又杂,可能地基不稳后患无情,但是这都不重要,这段经历应该是自17年升学阶段以来最值得怀念的日子了,也很感谢自己坚持了下来,当然这一切都是开始,选择比努力更重要,但是思想和意识会决定你发展的方向和高度,接下来的日子里请继续努力。文章修回,专利授权,数据补全,顺利毕业!
1、 虚函数
2、 堆和栈的区别、迭代器
3、 前n个数找前k个数数组里,快排的思路和实现
4、 数据库有没有什么懂的
5、 C++里边STL的底层实现
Map、unordered_map
6、 进程和线程之间的通信方式,尤其是线程
死锁产生的条件和破坏他们之间的方式,说一下套接字
7、 Linux的操作命令
8、 STL源码中的hashtable的实现
9、 STL中unordered_map和map的区别和应用场景
1、 python为什么运行速度比较慢
2、 python里的多线程实现与服务,可以实现吗、
3、 ios网络模型,传输层和运输层
4、 linux中的awk语句TCP/IP
5、 C++里的虚函数表的存储位置,extern外部关键字
6、 7 层模型,路由在哪层
7、 STL底层
1、 TOP K 问题 时间复杂度
从方案到实现到复杂度
2、 25匹马 5个赛道找出其中最快的3匹马
智力题要总结
3、 Python里进程、线程的实现方式,全局锁
4、 大根堆,小根堆的介绍
5、 最大连续子数组和
6、 SSL加密,包括对称加密,非对称加密,数据的传输过程
7、 互斥锁、条件锁
Xgbost预测趋势时,会把范围限定在一定范围内,如何解决这个问题?---差分
在实际中一定是有这个问题的?模型本身的缺陷?
Lstm输入时如何解决对齐的问题,比如不同商店的不同物品销售额不同,补零以后会不会很稀疏
时间特征有哪些构建?最重要的特征有哪些?怎么体现
特征的重要性怎么删除,有哪些方法?
数据预处理的方法有哪些?
One-hot编码的方法有哪些?是什么意思、
为甚么用U-net,有没有用其他方法?它和fast-rnn的区别和优势体现在什么地方?
为什么这么做,sobel算子的具体指标框架是什么?
陆金所 数据分析1、 SVM可以用于回归嘛,为什么用核函数,包括他的高斯核比正定核要好一些
2、 XGboost的并行化体现在哪里
3、 python的深拷贝、浅拷贝
4、 python内部list列表的队列操作,可以有没有什么其他的简单操作
5、 SVM的支持向量,为什么叫支持向量?支持向量是什么?
金融+平安算法1、 关系型数据库和非关系型数据库的区别
2、 MongoDB数据库有没有用过
3、 常见的网络状态码200,404,502,301
4、 TCP,UDP的区别
5、 讲一下LR模型
6、 数据库中去重用到哪些,有哪些去重的手段,数据读取过程中
7、 数据清洗的一般步骤有哪些
8、 模型调参里面用到的损失函数有哪些
9、 GPU为什么比CPU要快?
数据库和SQL语句要多用一些、
Tahh比sigmod的优点在哪里
Relu函数的优点在哪里、
图像上的广度优先遍历BFS、图像区域中的4联通域怎么圈出来
常见的语义分割网络有哪些?Mask R-CNN V-Net FCN
TOPk的问题,数据流中的问题
招银网络科技1、 PV信号量----进程之间的通信方式
2、 C++中的封装、继承、多态
3、 STL中的库 各种容器的使用方法 底层的算法 包括sort函数
4、 数据库有没有使用过包括游标 示图等
5、 Mallo/free 和 new/delete 的使用方法
6、 解释一下递归函数 dfs的作用
二面
实现一个简单的string类
Static与const的区别
重载和重写的区别
程序编译的一般过程
手写冒泡
大端与小端
字节对齐
静态变量初始化在什么时候
Linux中的套接字,网络通信部分
项目中用的C++部分
偶数除以2,奇数乘3+1,输出需要运算的总次数
雪狐科技算法
1、 struct里定义int,float两个变量,在64位机器上sizeof会输出多少、
2、 py中的闭包、协程、字符串格式化输出形式有哪些?
3、 堆和栈有什么区别
4、 说一下反向传播原理
5、 逻辑回归和线性回归之间的区别,LR model中的主要参数有哪些
6、 说一下BN归一化,其中的公式是什么,怎么训练
7、 常用的损失函数有哪些,激活函数有哪些
8、 引用、深拷贝、浅拷贝有什么区别
9、 Python里单下划线和双下划线有什么区别
10、程序编译的一般步骤有哪些?
百度1、ID3为什么可以处理离散值,CD4.5可以处理连续值嘛
2、SVM和LR的区别,什么时候适用
3、树模型,RF、GBDT、XGBOOST的区别联系
4、梯度消失和梯度爆炸,为什么会产生
5、L1,L2正则化的区别
6.、评价指标 AUC和ROC曲线 如何计算
7、CNN卷积网络知道多少,你的U-Net网络最深到多少层、介绍一下你的这个项目
8、分层打印树
滴滴数分
1、 要进入一个装修行业怎么分析
2、 单车投放怎么分析,如何派送?
3、 滴滴订单在某一个地区如何进行派送?
4、 订单销售额下降应该怎么处理?
5、 如何处理事件冲突的问题,明天是DDL,可是事件有限,如何处理
6、 说出自己最大的两个优点和缺点是什么?
总结
业务面试题?
1. 对目前互联网公司的额看法
2. 有没有之前了解过海外业务?
3. 讲述项目的时候不能太快,要注重听者的感受,同时要自己主动阐述遇到的问题,让面试官看到闪光点,不需要主动挖掘、
视频质量怎么打分?
单车如何派送?
时间、温度、地点、季节
横向中一天的具体时间点,纵向的话一年四季的某个具体时间节点
温度,天气,是否有雨,夏天高温单车的需求量会相应增加,体感温度
是否有大型活动,是否在商圈附件,距离地铁的直线距离,工作写字楼的空间分布
1、你是如何理解产品经理这个岗位的
用户需求/业务需求转换为产品需求,负责产品的设计/执行和成果负责
从一开始的需求调研、产品规划(目标定位、竞品分析)、产品设计(UI前端设计、后台功能开发、SDK包的可迁移性)、产品执行、产品的后期推广和迭代
AARRR model
获取用户(Acquisition)
提高活跃度(Activation)
提高留存率(Retention)
获取收入(Revenue)
学习能力、抽象能力、数据分析能力
决策能力、取舍能力、
逻辑思考能力、协调沟通能力、执行力保证落地
作为项目经历,要对孵化的整个产品全方位负责,在提需求的时候,换位思考,保证开发、运营各个团队最大程度的理解需求并且在语义共识上达到最大比例。
好的产品定义:真正解决需求,有广阔的市场、有一定规模的粘性用户,保证市场存活;用户体验优良,最后要有可行的潜在盈利模式。
版本控制:开发版本、测试版本、发布版本,彼此没有交集,减少合并冲突
产品架构设计:战略层(用户需求)、范围层(功能列表和优先级)、结构层(功能关系、信息架构)、框架层(流程与逻辑)、表现层(UI交互)
互联网思维:“专注、口碑、极致、快”
认知盈余:内容消费、内容分享和创造,其价值远大于消费
用户调研:
用户访谈、焦点小组、可行性测试、用户画像
定量:调查问卷、数据分析、眼动测试
商业模式:流量变现(广告、导流)、佣金分层模式(美团、淘宝)、、增值服务模式(游戏充值)、收费服务模式(企业邮箱)
3、跨境电商为什么想来虾皮:
市场东南亚电商的普及度低、硬性条件(手机移动互联网的普及率高)、商家入驻简单,需求和市场的可扩展性决定了未来的发展前景
人口红利+电商市场潜力
入驻简单引流、出单程序流程快+商家规划选品+执行力+物流生态链
开拓市场负责人:
自身产品优势、自身定位、市场分析、竞品分析
客户目标丁文,擅长什么,能给客户提供什么。解决什么问题、与潜在客户的目标客户进行来袭,提供独特卖点
电商平台:商品展示功能、会员管理功能、网上交易功能、商品搜索功能
产品卖好+配送好
买家:在线咨询功能、购物体验、售后保证
卖家:物流配送管理系统
4、推荐功能
聚类、标签,推荐用户感兴趣的商品,具体包括常规推荐和个性化推荐
将固定商品放在推荐位,基于商品之间的关联性进行相关商品的 。(具体包括销量排行榜、浏览、收藏数据做的商品统计)
内容电商, 图文、视频的引流方式、直播带货。内容中嵌入商店入口,
简历内容社区,提供评论等各种方式,增加用户粘性
基于用户的购物习惯进行个性化推荐,基于用户的协同过滤算法和加基于物品的协同过算法,包括冷启动和热启动的一般问题,以及引入随机性,解决推荐过程中越推越窄的问题
用户行为记录模块、用户行为分析模块、商品分析模块、用户画像,从备选项中进行排序推荐
具体包括召回。推荐、倒排序这样的机制在推荐算法中,一般的FM,FFM因子分解机模型
5、抖音和快手的区别
快手:记录世界记录你
抖音:记录美好生活
运营模式不同、算法不同、主要用户群体不同、内容不同、流量不同、用户使用习惯也不同
9.13面试百度
1、SGD还有哪些其他梯度下降的方法?
经典梯度下降法(计算所有全部样本)、SGD随机梯度下降法、小批量梯度下降(online earning、m取2的n次幂、lr动态调整)
其他的一般最优化方法还有直接推导法(本身是凸函数有闭式解,可以直接推导),牛顿法,拟牛顿法。
更一般的还有动量(Momentum)方法、AdaGrad(历史梯度平方和)、Adam一阶矩和二阶矩,利用指数滑动平均加权的方式可以进行梯度更新。
2、神经网络中如何将进行梯度检查与优化
可以将反向传播计算得到的梯度和利用导函数计算得到的梯度进行对比,n代表了θ参数维度,我们对每一个θ_i执行上面的求导方法。之后检验我们使用导数定义求得的导数和使用反向传播求得的导数是否接近(几位小数差距)或者相等。那么我们就可以确定反向传播的实现是正确的。可以很好的优化J(θ)
注意:我们只需要使用一次梯度检验来检验我们反向传播算法求得的导数是否正确。如果正确,那么我们后面的学习就需要关闭梯度检验(因为使用梯度检验计算量大、且慢)
也可以利用反证法,计算得到的梯度如果有更小的值说明当前梯度更新的值不太对。
3、什梯度负方向是梯度下降最快的方向?
该方法利用集束搜索策略(beam search strategy)构建有效的组合特征
利用GBDT进行特征选择个特征组合输入下一层
决策树进行特征组合
5、LR Model中有哪些问题可以优化解决?
adagrad, 利用累计的梯度平方和作为分母,导致优化到后期,分母越来越大,update的越来越小;另一方面,由于是用梯度平方和作为分母,如果一个参数出现的次数很少,则相对出现多的参数,分母会比较小,即update较多。适合处理稀疏数据。
7、C++11中有哪些比C++9之前的优势有哪些?
auto关键字,可以通过赋值语句自主推导变量定义类型
空指针常量nullptr,利用关键字单独充当指针常量
右值引用和move语义,
利用右值引用,存储在CPU或者寄存器中,不可以求地址,通过move语义在复制构造函数和移动构造函数中自动选择,在临时对象被析构之前,直接将对象内容进行拷贝和复制出来,从而避免了内存多次调用的问题
其中右值引用存储在CPU或者内容中,直接修改指针,避免内存多次调用
shared_ptr使用了引用计数,每一个shared_ptr的拷贝都指向相同的内存,每次拷贝都会触发引用计数+1,每次生命周期结束析构的时候引用计数-1,在最后一个shared_ptr析构的时候,内存才会释放。
weak_ptr是用来监视shared_ptr的生命周期,它不管理shared_ptr内部的指针,它的拷贝的析构都不会影响引用计数,纯粹是作为一个旁观者监视shared_ptr中管理的资源是否存在,可以用来返回this指针和解决循环引用问题。
std::unique_ptr是一个独占型的智能指针,它不允许其它智能指针共享其内部指针,也不允许unique_ptr的拷贝和赋值。使用方法和shared_ptr类似,区别是不可以拷贝:
智能指针
auto_ptr(赋值时有缺陷)
shared_ptr(析构函数引⽤计数,允许多个指针指向同⼀个对象;成员数据中有count,当count==1 才释放内存,否则析构函数只负责count--)
unique_ptr(不允许赋值,除⾮是临时对象的赋值;⽀持指针的数组)
weak_ptr (弱引⽤当引⽤的对象活着的时候不⼀定存在。仅仅是当它存在的时候的⼀个引⽤。弱引⽤并不修改该对象的引⽤计数,这意味这弱引⽤它并不对对象的内存进⾏管理,在功能上类似于普通指针,然⽽⼀个⽐较⼤的区别是,弱引⽤能检测到所管理的对象是否已经被释放,从⽽避免访问⾮法内存)
8、过拟合的解决方案?随着epoch的增加,loss不增反降原因有哪些?
9、LR model中y输出是1和-1的时候怎么办怎么操作?
替换模型,利用GBDT二元分类树解决label中y=正负一的情况
其中GBDT的损失函数分为两种,回归树是MSE,分类树是指数函数和对数似然函数作为它的损失函数。
一是采用指数损失函数,这样GBDT就退化成了Adaboost,能够解决分类的问题;
二是使用类似于逻辑回归的对数似然损失函数,如此可以通过结果的概率值与真实概率值的差距当做残差来拟合;
在过程中没有闭式解,一般使用近似值进行代替。
从以上过程中可知,除了由损失函数引起的负梯度计算和叶子节点的最佳残差拟合值的计算不同,二元GBDT分类和GBDT回归算法过程基本相似。那二元GBDT是如何做分类呢?
但实际上LR Model是逻辑回归模型,对数几率为线性,将输出的连续值映射到【0,1】区间内,一般的阶跃函数不可导所以引入sigmod函数,对数几率函数,因此它会映射到这个区间,而不会取到-1值这种情况。
性模型到广义线性模型,是从回归任务到非线性映射引***系函数的一种机制。
逻辑回归也是广义线性回归中的一种以对数几率函数为联系函数的特例
10、Lstm最后一层的输出函数的激活函数是什么?
一般根据任务来进行确定,如果是常见的分类任务的话,最后一层一般是softmax或者sigmod函数,进行概率值评分输出
在我们的任务中是回归任务,但是也要给出30490维度的输出,所以最后是全连接层,默认是线性模型直接进行各位维度下商店的预测结果即可。
11、Lstm为什么可以解决梯度消失梯度爆炸的问题?
12、Lstm中用到的激活函数有哪些?为甚么是这些激活函数?
13、特征选择的常见方法有哪些?
14、拉格拉日乘子法中的优势和问题展开?
在求解最优化问题中,拉格朗日乘子法(Lagrange Multiplier)和KKT(Karush Kuhn Tucker)条件是两种最常用的方法。在有等式约束时使用拉格朗日乘子法,在有不等约束时使用KKT条件。
拉格朗日乘子存在数值问题,使用拉格朗日乘子法执行约束会导致鞍点问题,并且相应的线性系统是不确定的
15、原子操作知道嘛?CAS
16、常见的数据结构有哪些?
17、评估指标用到哪些?
18、3D V-Net的具体的调参技巧有哪些?
19、如何验证一个分布是高斯分布?因为提到高斯分布和拉格拉日分布?
利用W检验和D检验(spss和matlab中有专门的检验函数),偏度和峰度,
利用假设检验设定原假设和备选假设,然后基于偏度和峰度的计算规则计算统计量和置信区间,拒绝域等信息。
正态概率累积分布图法,利用概率密度函数和累积概率密度函数分别计算数据的分布验证。大数定律和频率逼近。
小米
1、Softmax函数如果不加会怎么样?为甚么要加softmax函数?
2、LR为什么是对数损失函数,可以用其他的MSE损失函数嘛?
3、为什么适合离散特征
4、为什么不用平方误差
回归问题中常见的损失函数:
MSE和MAE,均方误差(L2误差)和平均绝对误差(L1误差)
其中MSE的问题因为有平房项,会对离群点异常敏感,而MAE有效缓解这个问题,MSE对应的用数据均值来代替,而MAE是基于中位数来进行代替,因此可能效果更优。
L1损失对异常值更加稳健,但其导数并不连续,因此求解效率很低。L2损失对异常值敏感,但给出了更稳定的闭式解(closed form solution)(通过将其导数设置为0)
Huber Loss,平滑的平均绝对误差,在回归问题中将二者的优点结合起来。
5、、BN层中的r,b具体为甚么要加?测试时添加的是整体的均值和方差?
加入r,b有更多的可学习性参数,因此可以使模型的参数更加丰富复杂。
保证输入和输出之间的分布一致,但是每一层强制归一化后会破坏之前的学习到的特征分布,降低了模型的拟合能力,因此在每一层中再引入r,b系数进行变换重构和自主学习,保证恢复到最优的输入数据分布,并且与之前网络层解耦。
6、AUC曲线有什么缺点?
AUC是指 随机给定一个正样本和一个负样本,分类器输出该正样本为正的那个概率值 比 分类器输出该负样本为正的那个概率值 要大的可能性。
AUC反应的是分类器对样本的排序能力
缺点是关注正负样本的排序结果,而对具体的概率值不是很敏感
反应的是对正负样本的区分能力,在一些具体场景下,要反应不同的精确率、召回率的时候无法进行区分
同时因为它反应的是ROC曲线的面积,因此在有些时候面积相同,但是在不同的分布区间内预测能力和结果一般是不同的
7、LR model的损失函数为什么不能用MSE?还有哪些常见的损失函数?
同时logistic回归和softmax回归使用交叉熵而不用欧氏距离是因为前者的目标函数是凸函数,可以求得全局极小值点;用欧氏距离则无法保证。
不用MSE是因为MSE一般适用于回归问题,因为在实际评估输出和真实label假设满足一定分布,在模型输出与真实值的误差服从高斯分布的假设下,最小化均方差损失函数与极大似然估计本质上是一致的。
其他损失函数还有对数损失函数、合页损失函数、MSE、指数损失函数
其他问题
1、 gbdt中到底是怎么拟合残差的?分类中和回归中怎么拟合?
2、 FM模型了解吗?
3、 比如id编码输入gbdt,xgboost会有影响吗,应该怎么处理数据?
4、 如果利用xgboost做多分类问题怎么做?最后1vs1,1vsall,最后的概率怎么融合在一起
5、 BN层中的数据是怎么进行归一化的?
6、 多数之和怎么做,找出所有等于target和的所有序列
7、 两数之和返回值即可,全排列的时间复杂度
8、 如何做麦当劳的推荐框推荐?场景提设计
9、 如何做外卖时间预估?
做题:
旋转数组的最小数字
地雷随机扫格子
搜索旋转数组lc 33
组合求和、两数之和
108. 将有序数组转换为二叉搜索树
杀死进程
只出现一次的数字
硬币组合