别人的面经(算法方向)
机器学习
统计学基础
数据增强,和要注意的地方
怎么判断过拟合,如何解决
logistic回归
LR用过吗
(用过:Kaggle的二分类检测 )
softmax、多个logistic的各自的优势
(1.类别数爆炸,2.推了下softmax反向传播的公式,来对比两者的优势)
trickList,样本怎么选?(随机,被面试官嫌弃)
各种Tree
讲一讲树模型
(RF, GBDT, XGBOOST)
ID3、C4.5等基本树,是二叉树还是多叉树,被切过的特征还会再切么?
(离散(离散数量>2)是多叉分类,连续是二叉,离散不可以再切,连续可以再切)
GBDT和randomForest区别?
(原理角度,方差、偏差角度,过拟合角度)
GBDT和XGBoost区别
(算法上工程上的优化,知乎,)
XGBoost和RandomForest哪个树比较深
(RF深。说了boost和bagging的思想。boost使用低方差学习器去拟合偏差,所以XBG和LGB有树深的参数设置,RF是拟合方差,对样本切对特征切,构造多样性样本集合,每棵树甚至不剪枝。)
XGBoost特征重要性程度怎么判断的?
(不清楚,但是用的很多,猜测是按分裂点的次数(在所有树的出现次数),答出了频率这一点(gain 增益意味着相应的特征对通过对模型中的每个树采取每个特征的贡献而计算出的模型的相对贡献。与其他特征相比,此度量值的较高值意味着它对于生成预测更为重要。cover 覆盖度量指的是与此功能相关的观测的相对数量。例如,如果您有100个观察值,4个特征和3棵树,并且假设特征1分别用于决定树1,树2和树3中10个,5个和2个观察值的叶节点;那么该度量将计算此功能的覆盖范围为10 + 5 + 2 = 17个观测值。这将针对所有4项功能进行计算,并将以17个百分比表示所有功能的覆盖指标。freq 频率(频率)是表示特定特征在模型树中发生的相对次数的百分比。在上面的例子中,如果feature1发生在2个分裂中,1个分裂和3个分裂在每个树1,树2和树3中;那么特征1的权重将是2 + 1 + 3 = 6。特征1的频率被计算为其在所有特征的权重上的百分比权重。))
XGBoost很容易理解它的回归和二分类,如何理解多分类呢?
(面试官提示我说三分类,构造100棵树还是300棵,我就意识到了,回答原以为是100棵。面试官说构造三百棵树,拟合三分类,再softmax。(onehot之后,输入标签是一个向量,对向量中每一个预测点集成一群树))
XGBoost和LGB区别:
只想到三点,特征排序,特征切分和直方图和全排序
说他们共同点较多 小提一点,又小提了GBDT到XGB和LGB,然后扯了扯实际用这两个模型的感受,然后说只记得三点不同了,实际效果xgb不输LGB但是调参不好搞,而且LGB很快
1)更快的训练速度和更高的效率:LightGBM使用基于直方图的算法。
2)直方图做差加速:一个子节点的直方图可以通过父节点的直方图减去兄弟节点的直方图得到,从而加速计算。
3)更低的内存占用:使用离散的箱子(bins)保存并替换连续值导致更少的内存占用。
4)更高的准确率(相比于其他任何提升算法):它通过leaf-wise分裂方法(在当前所有叶子节点中选择分裂收益最大的节点进行分裂,如此递归进行,很明显leaf-wise这种做法容易过拟合,因为容易陷入比较高的深度中,因此需要对最大深度做限制,从而避免过拟合。)产生比level-wise分裂方法(对每一层所有节点做无差别分裂,可能有些节点的增益非常小,对结果影响不大,但是xgboost也进行了分裂,带来了务必要的开销)更复杂的树,这就是实现更高准确率的主要因素。然而,它有时候或导致过拟合,但是我们可以通过设置|max-depth|参数来防止过拟合的发生。
5)大数据处理能力:相比于XGBoost,由于它在训练时间上的缩减,它同样能够具有处理大数据的能力。
6)支持并行学习。
7)局部采样:对梯度大的样本(误差大)保留,对梯度小的样本进行采样,从而使得样本数量降低,提高运算速度
除了树模型,Bagging能不能接其他的基模型
腾讯比赛特征如何离散化啊 连续性特征也能交叉啊为什么不交叉
离散化就是数据分桶,我这里按百分位分桶,结果和面试官解释了很久为什么百分位分桶比较均匀,百分位是数据排序的百分位,而不是区间的百分位。
连续性特征交叉,连续性特征映射成离散特征后,可以和连续性特征一起送到嵌入层里。
AUC知道吧,回归怎么计算AUC
不知道怎么计算,一查 根本没有..是不是我听错了 他其实想说逻辑回归的AUC怎么计算
(回归没有AUC这么一说)
CTR估计,都用什么?
我说LR和FM ,代码写过,FM主要是NFM,其他的FM都知道理论但是没写过代码
特征重要性你怎么做,例如特征组合和删除,调参你是怎么调的呀?
答:特征组合用onehot+交叉+EMBEDING。组合的话要看实际分布,讲了自己构造过的一个和标签有线性关系的组合,说自己用的是遍历的方法,用两两数学关系构造新特征,看和标签的线性关系。
特征删除等想到了某个KAGGLE大佬的特征筛选步骤,从他的kernel我也是学到了很多。
调参:
第一步祖传参数。比如树模型的深度、采样频率等,这个主要还是经验
第二部调参,比如尝试新特征,特征采样频率要设为1啊这种细节
讲一讲LDA算法
(线性判别分析)
讲一讲SVM
(建模思想,误差函数推导,核,优化)
讲一讲DL
(一些常见的 DL相关问题,记不太清了)
方差-偏差分解
神经网络基础
样本
样本不均衡怎么处理(一个batch类别均等采样,修改loss对不同样本的权重)
学习率
初始学习率怎么设
卷积
卷积操作的计算量
可分离卷积,和普通卷积相比,举个具体维度算一下
(可分离卷积、分组卷积、扩张卷积、转置卷积(反卷积)的理解)
空洞卷积做什么工作
感受野怎么计算,举个例子,写个公式
BN
BN实现,写个例子,训练和预测阶段有什么不一样
Batch normalization原理。先归一化然后恢复有何意义?
如何用BN层对卷积层进行剪枝,效果如何
(1.预白化,训练块,sigmoid两端饱和梯度小,BN可以缩放到线性区间;)
(2.NN深了之后每一层分布都会偏移,BN压缩分布使得各层分布趋近于一致)
(3.BN可以看做一定程度的数据扩充,数据做了抖动处理。)
(训练过程当前批次归一化,预测是时候是全部数据集,而且BN有两个超参数要优化)
Dropout
( Dropout可以作为训练深度神经网络的一种trick供选择。在每个训练批次中,通过忽略一半的特征检测器(让一半的隐层节点值为0,当然这个“一半”是超参数,自己设),可以明显地减少过拟合现象。这种方式可以减少特征检测器(隐层节点)间的相互作用,检测器相互作用是指某些检测器依赖其他检测器才能发挥作用。
Dropout说的简单一点就是:我们在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征。
其实就是个Bagging策略,构造子网组合。)
backbone模型优化,怎么迭代基础网络的版本(前两个卷积层通道数不用很多,主要是提取边缘、颜色信息,少量的卷积核足矣)
skip connection有什么好处?(推了下反向传播公式,根据链式法则,梯度可以直接作用于浅层网络)
cascade的思想(改变样本分布,困难样本挖掘,能达到比较好的效果)
hdcnn
LOSS
文字识别使用ctc loss的细节
为什么用multiLoss?多loss权重如何选?(训练普通的模型使其收敛,打印反向传播梯度的大小,这表示该task的难度,以此作为loss的权重,然后补充说了下可以搞一个动态的loss权重,根据一段时间窗口来决定loss的权重。
模型是如何量化的,量化的具体过程介绍下
Resnet好在哪里
10.
L1、L2不同?L1为什么能稀疏?
从数学分布讲了,一个是拉普拉斯分布 一个是高斯分布;讲了图解为什么L1能稀疏,一个圈一个菱形,容易交在轴上。工程上讲了,L1的近似求导,区间内0区间外优化。然后L2是直接求导比较简单。
知道几种激活函数?
我说最简单的SIGMOID TANH RELU我就不提了,讲了讲某个比赛时候用到了leakRELU,然后谷歌的论文里面的swish函数,随口介绍了一下这个论文。
Dropout为什么预防过拟合?
从bagging的角度答的,NN是偏差小方差大的学习器,适合用bagging,构造子网络在预测的时候组合,相当于构造了学习的多样性,实现了bagging。
协同过滤:
说了解 但是没写过代码
(协同过滤,感觉一个学生要是搞科研为主还是很难接触到,感兴趣的可以了解下,特别是面电商的商品推荐工程师呀还是容易问到的)
为什么用BN压缩异或后映射的正数部分而不是什么什么(没听清)?
我提到了BN层也算做了数据扩充,而且BN层把只有0,1的编码流做了抖动转化,让梯度能变起来,优化的更好(机器学习可行无非就两点,第二点就是优化问题)
为什么用CNN?然后面试官介绍推荐领域内的另一种东西(Embedding),这个Embedding映射了隐向量,你觉得是CNN交叉好呢 还是隐向量好呢
回答:(其实我知道Embedding,因为一起参加比赛的朋友手撸了NFM,第一层就是这个嵌入层)我的回答偏向于场景,编码领域内的一个特点:只有局部相关,时不变。所以用CNN,做全局相关的Embedding反而不好。推荐里面特征离散化后稀疏,而且特征间本身可能具有高阶交互信息,所以映射成隐向量效果会较好,如果是推荐,我建议用隐向量而不是CNN,其实这是由场景决定的,是数据的特点决定选用什么学习器,使用什么网络。(我还介绍了图像为什么ResNet更好,但是编码里我的两层极限调参网络性能超过了残差网络,其实都是场景决定的)
网络结构
RNN用过吗 用过:项目+Kaggle
yolov3中的anchor怎么生成的
avchor大小、长宽比选取(说了业界常用的方法(YOLO9000中的方法),并提了一个更优的方法)
为什么mobilenetv2速度快(还有mobilenetv1),工程上并没有特别大的提升?(卷及源码上的实现,两个超大矩阵相乘,可能是group操作,是一些零散的卷积操作,速度会慢)面试官不满意,说应该从内存上考虑
shufflenet原理
inception什么结构,为什么能提升性能
fasterRCnn与ssd的区别(one-stage与two-stage的区别)
centernet具体是如何工作的,损失函数
介绍focal loss
如何解决小目标:为什么要深层、浅层featureMap concat?需要数量级上的调整,不然深层的feature可能会被压制
先问用没用过RNN
答:项目的RNN效果,分析RNN在项目里不好,和比赛中RNN前期效果(前期效果最好)
用过GRU吗,为什么LSTM能够记忆长时记忆。
答:GRU用过一次,在哪里用的。用的记忆门,保证长时记忆传输。
Attention有哪些?
答:之前说到了自己用过attention,只用过,不知道原理。
(作为一个调参侠,各种网络随便试,但是attention的本质我还是不甚理解,attention is all you need?)
算法题
实现类似split的操作,去掉字符串中的逗号,考虑边界条件
求数组中k个最大的数(最大堆和更优化的算法)
(方法1:堆排序 分析复杂度是O(Nlogk)(没分析错把)
方法2:快排二分 分析复杂度是O(N)
方法3:排序+查表 分析复杂度(NLogN)
要求O(N)所以用的快排二分,面试官说快排能做这道题?但快排是最快的(我知道的)也正好是要求的O(N)复杂度
(百度了一下,快排和hash最快,其余都不快)
手写python代码,但是编译不知道哪里也错了,这个IDE也不提示,面试官也很尴尬,说以前用牛客的可以报编译错了在哪 于是我就说下面的题用C++写(这个问题很严重,面试的时候找不到bug,所以一定要小心python,一定要bug free,不要老实用C++)
)
大数相乘(用数组表示每个数,要进位)
给定n个方块,每个方块长度不同、重量不同,然后又规定大的方块放小的下头,每个方块上
如何设计一个可以快速获得某个范围内数据和(比如一个数组,求索引到r的数据和),方法可以用前缀和等
求01矩阵中1的连通数(dfs会栈溢出)
字符串判断是否是ipv4,c++
求和接近于target的连续子数组(LeetCode上有类似的题)
地板n*3,木板1*3,几种排法
(dp[n]=dp[n-1]+dp[n-3])
等概率1-7,造等概率1-10,分析调用1-7的次数期望
(7进制,掉用两次产生0-48,然后截掉40和40以上的再//4+1;期望不好算,是个数等比列求和,然后我就口算的近似值2.5n
想一想,可能是面试官压力面我,所以才会质疑快排把,分析了为什么是O(N)而不是面试官说的O(NlogN);然后向他解释为什么部分排序可以解决这个问题,面试官的水平应该是没问题的(PS:不要以为面试官能力不行,绝大多数面试官水平都到位))
棋盘有棋子,只能左上走到右下,右走或下走,问最多经过棋子数
dp[i][j]=max(dp[i-1][j],dp[i][j-1])
if chess[i][j]=='棋子':
dp[i][j]+=1
大数据 买东西 找买东西最多的100个 怎么做
建个哈希表+小顶堆
MAP底层怎么做的
我说还没看底层代码。(话说我一直不知道有MAP这种东西存在,都是手撸哈希表,准备有时间看一下STL源码分析)
(底层红黑树)
索引复杂度呢 我说,log(n) 恍然大悟索引是二叉树
有没有O(1) 的?恍然大悟 我擦原来还有哈希表
哈希表冲突怎么办
回答了拉链 重哈希 当前+1
(同样高频问题,拉链:链表,冲突了就在链表后+1个;探测:线性探测,二次探测,就比如当前的值+1;再哈希:多个哈希函数)
1000以内的最大素数
说了Python能够O(1)空间实现素数生成器,筛选法,但是没写,没要求就不写,直接bool判断就好,注意从大到小
分析复杂度,如何减少复杂度?从上到下,从999开始往下搜,搜到就停,每次-2。
bool判断,从2到根号x开始,全求模,非0跳出False。
不用除法实现除法,很简单
注意我的写法里,C++里abs(一个负数)可能溢出,但是无所谓面试的时候速度A比较重要,平时要注意这些细节,而且python不会溢出
第一题二分
python写的编译报错,牛客网查不到错在哪,我就赶紧c++重写了一个
讨论了二分的四个边界条件
return st,en二种对应返回搜索边界,data[mid]<value和<=value,两种对应二分上下界
共四种,然后说四种情况对应,每种的取值范围
返回st,返回的取值范围是0到数组长度,返回en,则是-1到数组长度-1
st和en含义不一样,这个最好自己写写理解一下
(lower_bound是value大于等于数组第一个,即找到数组第一个小于等于value的位置,如果返回时0,那么二分的结果不一定是对的,因为返回的值阈值是0到N-1,如果数组中所有元素都大于value,这是应返回-1,但是返回的结果是0,所以返回st会有取值下边界,同理en是取值上边界的问题)
然后说了C++算法标准库(lower_bound和upper_bound)用的哪两种形式:返回st的那两种
第二题是二叉树的深度
python手撕,又报错,然后无IDE查bug还好查到了,print大发好,对python,如果print(“XXX”)没输出东西就说明没运行这一行。
定义树class的时候写的是.next,晕了,应该是.left和.right
第三题是数组旋转
左旋转,自信一波分析写完是右旋转,一脸懵逼,怎么看都是左旋转跑完就是右旋转
然后再那试了试改i,j,然后第二次就输出对了,晕,运气比较好
由于循环用的常数限制,要求改成了数组的范围,注意python len(data)是行 len(data[0])是列
正常构造一个和data一样大new数组是先列后行 [[0 for _ in range(len(data[0])] for _ in range(len(data)]
然后循环是先行后列(这样局部性更好,运行速度快,更容易缓存命中,当然面试官也没问我也没提)
写法应该是对的,但我不敢改成行列不相等的情况,万一错了呢.PS:想了想应该不对,因为new数组我照着data开辟的,应该行列反过来开辟才对,先行后列构造的话正好对应旋转后的情况,幸好没深究,不过这种bug很容易改,print()大法print一下就出来了
问问题:好希望他问我机器学习的东东,这样我就能装逼了,然而
讲讲动态规划的思想
数学
牛顿法、SGD、最小二乘各自的优势
凸优化
SVM的KKT条件
哪些学习器是凸优的呀?
LR sigmoid+logloss 凸优 。线性回归,最小二乘凸优。SVM凸优。NN肯定不凸优,因为往往收敛到鞍点。PCA无数学解,但是利用特征值反而得到 最优解
(注意sigmoid + 平方损失不是凸优化)
鞍点是什么?
我嘴贱说这个干吗,然后我说忘了,但绝对不是局部最优点,看表情面试官可以满意,其实真忘了。
(结合鞍点图像理解更佳。注意一个方向上升,所以很容易坐滑滑梯从上方滑到鞍点。另一个方向是下降,所以可以坐着下降的滑滑梯下去,但是鞍点这里梯度是0,是平的,所以优化就容易困在这里。前面多走几步就是滑滑梯但是他无路可走。
百度百科的的解释:
鞍点(Saddle point)在微分方程中,沿着某一方向是稳定的,另一条方向是不稳定的奇点,叫做鞍点。在泛函中,既不是极大值点也不是极小值点的
临界点,叫做鞍点。在矩阵中,一个数在所在行中是最大值,在所在列中是最小值,则被称为鞍点。在物理上要广泛一些,指在一个方向是极大值,另一个方向是极小值的点。
广义而说,一个光滑函数(曲线,曲面,或超曲面)的鞍点邻域的曲线,曲面,或超曲面,都位于这点的切线的不同边。)
拉格朗日乘子法能否求解非凸的目标函数问题。
项目
实际测试中有没有遇到比较棘手的问题,如果解决的
数据量有多少
对这个项目的贡献是什么
实习期间做了些什么,实习的公司是做什么的
2分钟介绍一下自己的优势
给个情景,如何训练模型、调优(题目很空,考察对深度学习的理解)
根据需求(前向传播时间、模型大小),确定模型和基础网络,跑第一版模型(举个例子)
判断是否出现过拟合情况,来决定下一步优化方向
结果分析(confusionMatrix等),分析问题
设计一个情景,倾斜字体检测,问有什么好的想法(数据增强,加入形变扰动;非end-to-end版本:分别训练检测和分类;end-to-end版本:加入仿射变换学习因子,学习字体倾斜的角度和形变)
看过哪些前沿论文(说最近两个月的优质论文)
介绍kaggle比赛
自我介绍
科研项目介绍
Kaggle 比赛介绍
腾讯比赛介绍
工科基础
编译的原理和过程
在嵌入式端使用了哪些推断库
caffe中的mutable_cpu和gpu中的数据怎么切换的
对caffe源码熟悉程度
工程上如何对卷积操作进行优化?(傅里叶模拟卷积,面试官不满意,说这是cudnn早就实现的,还有吗,不知道)
python和c++的区别
python为什么会慢(因为不知道数据类型,取数据要判断一下)
(python是一个动态的解释器型语言,python中的值不是存储在缓存区而是分散的存储在对象中)
(python是一门解释器语言,和c,java不同,c,Java都是编译语言,也就是说写完java程序首先要编译源程序,生成可执行文件一个class文件,而python写完程序提交到解释器,解释器会立刻将第一行代码翻译成机器码,然后将这些代码交给cpu去执行,所以python要比编译型语言慢)
什么是内存泄漏,什么时候会内存泄漏
(动态申请的内存空间没有被正常释放,但也不能继续被使用的情况。没有释放内存)
指针和引用,什么时候用指针什么时候引用?
(指针可以不初始化,引用必须初始化,且绑定后不能再变;向函数中传递指针和传递指针的引用的区别:
传递指针,会先复制该指针,在函数内部使用的是复制后的指针,这个指针与原来的指针指向相同的地址,如果在函数内部将复制后的指针指向了另外的新的对象,那么不会影响原有的指针;
对于传递指针引用,如果将传递进来的指针指向了新的对象,那么原始的指针也就指向了新的对象,这样就会造成内存泄漏,因为原来指针指向的地方已经不能再引用了,即使没有将传递进来的指针指向新的对象,而是在函数结束的时候释放了指针,那么在函数外部就不能再使用原有的指针了,因为原来的内存已经被释放了)
什么是堆
(平时只用数组模拟堆,不知道真实的结构,认为是父节点-子节点这样状态的数据结构(超高频问题,一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS(操作系统)回收。分配方式类似于链表。向上增长,栈的分割开辟在程序运行时进行,内核顺着链表找到一块足够大的空间交给程序,如果没找到就析构调无用内存再找一次,更具体的请自行总结一下并时常复习,区别包括申请方式、系统响应等很多)
堆和栈的区别
(栈就是存东西的空间,往最里面存,出来是最外面出来(超高频问题,函数运行时分配,函数结束时释放。由编译器自动分配释放 ,存放为运行函数而分配的局部变量、函数参数、返回数据、返回地址等。向下开辟,速度很快,局部性能好的话会和寄存器交互,存PC指针,函数参数多也会组成栈帧存到栈里面))
堆是?
说了向上开辟,速度慢、运行时改,然后开辟的过程,链表存着下一个位置和这一块有没有使用,如果没找到就析构合并内存再找,再找不到返回null(可以参考前面的答案)
堆栈是?
说了向下开辟、速度快、编译时分配、主要是存PC指针,然后函数入口参数多组成栈帧存进去等着恢复
进程和线程
((超高频问题,我看了深入理解计算机系统后的总结:1、进程就是活着的程序,程序不过是一些文本,运行着的程序就是进程,是系统进行资源调度和分配的基本单位,掌握资源,包括内存等,线程就是轻量级进程,是CPU调度和分派基本单位。2、由于进程占有资源,压栈和出栈慢,所以切换不灵活,线程不占资源,只占必要的资源(递归要压栈所以有一点资源),所以线程容易通信->在进程分来的内存中直接通信,容易并发->切换灵活,同一进程的线程切换速度很快,因此线程开销小3、地址空间,进程独立,同一进程的线程共享资源,对其他进程的线程独立))
堆和栈哪个开辟的快
MMP完全说反了,答完很久才反应过来。说的是堆编译的时候分配好了,不用再开辟伸缩什么的快,栈要伸啊缩啊所以慢(见前面的答案)
7、重载和重写
(注意重写是对虚函数的重写,我当时就答错了,所谓重载就是同名函数参数表不同,编译时会对函数改名,其实运行的时候他们已经不是同名的了;重写是虚函数重写,子类对父类的非虚函数在写一遍叫重定义或者隐藏,反正不是重写,重写是对虚函数的重写,我当时答错了)
静态内存和动态内存?
讲了static和堆栈是静态,编译的时候决定了大小,动态内存可以自由开辟->堆,也不知道对不对。。
(回来问了问另一个收割大佬,应该是这样)
malloc和new区别 free和delete?
1、一个是函数(面试官没问,但我自觉呀,诚实回答忘了是哪个头文件里的了,事后查了查是stdlib我擦我天天写没想到是这个)一个是关键字
2、malloc要算大小,返回void*(然后随口提到void*可以转XX *),强转后按转完后的类型用,要自己算大小;new的时候传类型,就比如100个int,然后直接开100个就好了,他自动将int长度算进去
3、malloc再堆上,new在自由存储区(然后回答忘了自由存储区再哪了) 讲着讲着忘了free和delete的事了
(自由存储区和堆似乎是概念上的区别?我丢,深入理解计算机基础是按C讲的,我哪知道C++的自由存储区和C的堆有啥区别呀,按理来说假如new是依赖malloc实现的,那么他们不该开辟于同一块区域么。C++默认在堆上开辟new需要的空间,所以new来自自由存储区和堆都行。
网搜的答案:
自由存储区是C++中通过new与delete动态分配和释放对象的抽象概念,而堆(heap)是C语言和操作系统的术语,是操作系统维护的一块动态分配内存。
new所申请的内存区域在C++中称为自由存储区。藉由堆实现的自由存储,可以说new所申请的内存区域在堆上。
堆与自由存储区还是有区别的,它们并非等价。
)
10、智能指针了解不?
我从python的内存管理角度讲了计数法析构内存,和智能指针原理一致。但我自觉诚实的说出我没用过智能指针
11、python怎么解决循环引用的?
是不是想问我智能指针的循环引用解法?我忘了呀,我就直说python本身解不了循环引用的问题(这实话实说,确实解不了,python又不是神,循环引用要靠自己析构,对python来说,循环引用的东西就算程序关了都还在),但python有个库函数可以发现循环引用位置,然后调用垃圾收集器析构掉就好(其实就是定位内存泄露,然后gc把它干掉)
12、计网了解不?计算机网络TCP和UDP的区别?
答自学。回答了很多,挺详细了
(UDP主要用于那些对高速传输和实时性有较高要求的通信或广播通信,
TCP用于在传输层有必要实现可靠性传输的情况
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的;UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
这里建议不是特别熟的回答首部设置不一样,别说的太详细。
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
)
13、长传输和短传输?
不知道
(是http的长连接和短连接吗?HTTP1.1规定了默认保持长连接(HTTP),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。)
14、操作系统呢?
回答自己看的深入理解计算机系统,看的很详细,收获了特别多
15、进程和线程?
程序不过一段文本,运行起来才是进程,一顿讲,资源/调度单位啊、共享内存啊、并发啊XXXXXX
(见之前的答案)
vector中push_back n个数(n是100w级别)复杂度是多少(c++,SLT)
【大神建议】还是要故意给面试官漏点马脚让他们来怼我们,然后再怼回去,并说明不这么做的原因,不然不好拿高评分。
【我】道理都懂,不会使。。。
【大神】面试说话语速快一些,让人觉得思维比较敏捷,可能会有加分项吧。
岗位信息
TEG 研究岗 部门做日志检测 安全领域
和面试官讨论如何用机器学习的方法去处理危险日志检测。从头复习了各大学习的知识,也算自我反省了。这里能获得的比较突出的经验就是,很多部门还是规则学习为主,对机器学习的分类情况有强烈的可解释性要求。所以树模型和LR等可解释性好的模型很受青睐呀
蘑菇街是干嘛的你造不?
答:卖衣服滴。于是他介绍蘑菇街主要是电商和直播。(听到直播我差点笑了,快憋不住了,就莫名很开心,然后他看我绷不住了赶紧说直播是目前蘑菇街发展最快的模块)
别人的面经(算法方向)相关推荐
- 别人的【计算机视觉算法岗面经】“吐血”整理:2019秋招面经
别人的[计算机视觉算法岗面经]"吐血"整理:2019秋招面经 相关链接:[计算机视觉算法岗面经]"吐血"整理:2019秋招资料 //2018/09/28 当初开 ...
- 别人的【计算机视觉算法岗面经】“吐血”整理:2019秋招资料
别人的[计算机视觉算法岗面经]"吐血"整理:2019秋招资料 相关链接:[计算机视觉算法岗面经]"吐血"整理:2019秋招面经 //2018/09/27 兵荒马 ...
- 【招聘内推】阿里高德地图招聘应用算法专家(P7,含推荐算法方向)
阿里高德地图机器学习研发部招聘应用算法专家(P7),Base 北京,感兴趣的小伙伴可以发邮件至lixi.tjj@alibaba-inc.com联系. 职位描述: 1.服务亿万高德出行用户,解决出行领域 ...
- 中兴机试 通信算法方向 秋招春招
选择题部分和通信相关,完全不会,随便填:算法相关的题目可以回答一部分. 时钟转换 二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59).每个 LED ...
- 京东2017校园招聘数据与算法方向笔试题
昨天做了一下京东的在线笔试.京东这次笔试题分为三个部分,第一部分是选择题30道,第二部分是2道编程题,第三部分是5道实用性更强的选择题.这里仅贴出题目,不提供答案. 一.选择题 1.设循环队列的容量为 ...
- 今日头条2018校招大数据/算法方向(第一批)详解
问答题 1.给定一棵树的根节点, 在已知该树最大深度的情况下, 求节点数最多的那一层并返回具体的层数. 如果最后答案有多层, 输出最浅的那一层,树的深度不会超过100000.实现代码如下,请指出代码中 ...
- 字节跳动2018校招算法方向(第一批) —— 1-最外层点
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M P为给定的二维平面整数点集.定义 P 中某点x,如果x满足 P 中任意点都不在 x 的右上方区域内(横纵坐标都大 ...
- 2018虹软笔试题(算法方向)
1.A是m*n的矩阵,B是n*m的矩阵,那么现在有(AB)x=0,讨论m.n和解x的情况(非零解.无解) 2.a是A的特征向量,那么(PAP^(-1))的特征向量是什么 3.牛吃草(28头牛吃9天,2 ...
- 2020字节跳动校园招聘算法方向第一场考试题解
第一题 [题意] 给出<a,b>,可以理解为a的爸爸是b,现在你要依次输出每个爸爸的所有儿子,儿子之间按照字典序排序 [思路] 思路不难,用map将爸爸的名字映射成数字,然后建一个二维ve ...
最新文章
- JavaScript和Chrome中的SSDP发现
- 使用js进行智慧树刷课
- android 定时重启手机,有必要定时重启手机吗? 重启后手机会更流畅吗?
- dosbox运行C语言,DOSBox使用教程 在windows下模拟DOS
- malloc函数和free函数的使用方法解析
- win10耳机插入电脑里没有声音的新感想
- c语言中obj的错误,C语言中的obj
- 27家金融类央企(中投+3政策性银行+5国有银行+中信+光大+4保险集团)(4大资产管理+建银+再保险+保险保障+中诚信托+中央国债+银行金融+科技证券+证券基金)
- Push master to origin/master was rejected by remote
- 机器学习D14——随机森林
- 【产品】项目管理的五大阶段
- 怎么windows设置qq邮箱服务器,电脑中如何添加QQ邮箱到Windows Live Mail
- java对接云点播上传视频,视频转码,播放视频,删除视频
- php搜索引擎开源源码,PHP搜索引擎源代码
- VSCode中vue拓展vetur整理代码时的尖括号换行问题
- GMS(Groundwater modeling system) 如何根据流域边界生成三维网格?
- windows 2008 r2 NTP同步Internet时间配置
- JAVA冒泡的介绍与使用
- [转]SNS游戏数据分析术语揭秘
- C语言五角星简单程序,如何用*编写五角星形和心形图案的c语言程序