腾讯基础研究一面面经

xiaoxiao2021-02-27  313

1、自我介绍 2、你的方向是电磁为什么要报这个岗位呢 3、说一下这个比赛(2016编程之美挑战赛),你主要是负责什么的 4、写一个题吧,给你一个字符串为ip地址,例如“192.0.0.1”,把它转换成一个32位的整数。            一开始没有理解题意,以为是要将四个ip地址的数字拼起来,就问面试官这个整数可能有12个位数,是不是要用longlong存,面试官解释是将每一个数字存成八位,于是开始写 #include <iostream> #includd <string> using namespace std; unsigned int Trans(string s) {      unsigned int res = 0, temp = 0;      for(int i = 0; i < s.size(); i++)      {           if(s[i] <= '9' && s[i] >= '0')           {                temp = temp * 10 + s[i] - '0';           }           else           {                res <<= 8;                res |= temp;                temp = 0;           }      }      res <<= 8;      res |= temp;      return res; } int main(void) {      string s;      cin >> s;      if(s == NULL || s.size() == 0)      {           cout << -1 <<end;           return 0;      }      unsigned res = Trans(s);      cout << res << endl;      return 0; }      面试官指出Trans函数没有异常处理,问如果数字大于255会有什么结果,还有为什么要先左移后与,其实先与再左移会比较好。 5、你都比较了解哪些机器学习的模型呢      比赛用过随机森林,SVM也比较了解。            那你说一下随机森林的随机都体现在什么地方呢?      主要体现在样本的抽取和建立决策树的特征选择方面,对于N个样本,M个特征,对于每一棵决策树在取样本的时候是从N个样本中有放回的取出n个来建树,同时建树的特征也是从M个特征中随机选取m个作为这棵决策树的特征,因此就避免了过拟合,体现了随机性。      那随机森林和GBDT有什么区别呢?            GBDT中每一棵树都是以上一棵树的残差作为目标值建树的,而随机森立每棵树都是相对独立的      未能答全面      随机森林既可以是分类树也可是回归树,但GBDT只能是回归树      随机森林由于树与树之间相对独立,因此可以并行生成,GBDT只有在上一棵树建立完成后才能进行下一棵树的建立      随机森林对异常值不敏感,GBDT反之      GBDT是基于权值的弱分类器的集成      随机森林是通过减少模型方差提高性能,GBDT是通过减少模型偏差提高性能      那说一下随机森林和GBDT误差函数的区别(记不太清问题了)      没答上来,待补充…… 6、你知道逻辑回归么?写一下表达式            P(y = 1) = 1 / (1 + exp(theta * x))      P(y = 0) =  1 - P(y = 1)      P(y) = P(y = 1) ^ y * (1 - P(y = 1)) ^ (1 - y)      它的图是怎样的?      画了图。。。      那逻辑回归怎么对特征进行离散化,或者你都了解哪些离散化特征的方法呢?为什么?      概念不太清晰,之前看过但是问到的时候一时想不起来             连续性变量转化成离散型变量大致有两类方法:      (1)卡方检验方法;      (2)信息增益方法;

     一: 卡方检验方法      1.1 分裂方法      1.2 合并方法      分裂方法,就是找到一个分裂点看,左右2个区间,在目标值上分布是否有显著差异,有显著差异就分裂,否则就忽略。这个点可以每次找差异最大的点。合并类似,先划分如果很小单元区间,按顺序合并在目标值上分布不显著的相邻区间,直到收敛。

     二:信息增益方法

     2.1 分裂方法      2.2 合并方法      这个和决策树的学习很类似。分裂方法,就是找到一个分裂点看,左右2个区间,看分裂前后信息增益变化阈值,如果差值超过阈值(正值,分列前-分裂后信息熵),则分裂。每次找差值最大的点做分裂点,直到收敛。合并类似,先划分如果很小单元区间,按顺序合并信息增益小于阈值的相邻区间,直到收敛。

     特征组合是什么?      没答上来 7、你都知道哪些聚类的方法?      k-means,层次聚类(问还有没有别的,实在是不太清楚了)       1.k-mean聚类分析 适用于样本聚类;      2.分层聚类 适用于对变量聚类;      3.两步聚类 适用于分类变量和连续变量聚类;      4.基于密度的聚类算法;      5.基于网络的聚类;      6.机器学习中的聚类算法;      k-means 在使用的时候,选的点的不同可能影响结果,问怎么选点?      没答上来       8、KNN的距离都有哪些,最常用的是什么?      有欧式距离、曼哈顿距离,欧氏距离较常用(答的不对,面试官反问了一下,还有别的答案)      
转载请注明原文地址: https://www.6miu.com/read-3785.html

最新回复(0)