腾讯基础研究一面面经

1、自我介绍

2、你的方向是电磁为什么要报这个岗位呢

3、说一下这个比赛(2016编程之美挑战赛),你主要是负责什么的

4、写一个题吧,给你一个字符串为ip地址,例如“192.0.0.1”,把它转换成一个32位的整数。
     
     一开始没有理解题意,以为是要将四个ip地址的数字拼起来,就问面试官这个整数可能有12个位数,是不是要用longlong存,面试官解释是将每一个数字存成八位,于是开始写

#include
#includd

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 <
          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的距离都有哪些,最常用的是什么?

     有欧式距离、曼哈顿距离,欧氏距离较常用(答的不对,面试官反问了一下,还有别的答案)

     

你可能感兴趣的:(面经)