【2020秋招】提前批陌陌机器学习算法工程师面试经验

铺垫

时间:9.2日中午1点钟
地点:西工大翱翔会议中心(一开始去成翱翔训练馆了= =,绕着西工大走了一大圈)
形式:现场面试,如果顺利的话,会有2-3轮技术面试,1轮HR面试,HR小哥哥不错。
面试体验:去之前看牛客上有吐槽面试体验的,我觉得还行吧,流程规范,就是一面面试官感觉也是个憨憨,我写了代码他觉得不对,然后我俩一起手动模拟 = = ,他终于相信我了!
然后二面面试馆太牛了,全面diss我,我有点难受,最后直接把我送到门口,say byebye~

问题&答案

有些记不太清了,就随便记录一下

签到后30分钟写两道题,easy难度。
  1. 求数组中,topk个最大数。
import java.util.PriorityQueue;

class Solution {
    public int findKthLargest(int[] nums, int k) {
        PriorityQueue<Integer> pq = new PriorityQueue<Integer>();
        
        for(int i=0;i<nums.length;i++){
            if(pq.size()<k)
                pq.add(nums[i]);
            else if(nums[i]>pq.peek()){
                pq.remove();
                pq.add(nums[i]);
            }
        }
        
        return pq.peek();
    }
}
  1. 调整数组元素顺序,使奇数都在偶数左边。
package leetcoode;

public class OddEvenSort {
	public static void main(String[] args) {
		int[] arr = {1,4,3,3,5,4};
		oddEvenSort(arr);
		for(Integer i: arr)
			System.out.println(i);
	}
	public static void oddEvenSort(int[] arr) {
		int low = 0, high = arr.length-1;
		while(low < high) {
			while(low<high && arr[low]%2==1)
				low++;
			while (low<high && arr[high]%2==0)
				high--;
			swap(arr,low,high);
			
		}
	}
	public static void swap(int[] arr, int i, int j) {
		int temp = arr[i];
		arr[i] = arr[j];
		arr[j] = temp;
	}
}
你说你在项目中使用了WOE和IV值进行特征评估,你们为什么非要用这个?还有其他的特征选择方法吗?filter中有哪几种,介绍一下?
  1. IV值和WOE的作用:IV值可以用来衡量自变量的预测能力,变量各分组的WOE和IV都隐含着这个分组对目标变量的预测能力这样的意义;
  2. 为什么使用IV而不用WOE
    1. WOE有正有负值,IV的正负与WOE的正负是相同的,乘积保证是正值,否则直接将WOE值加起来会正负抵消掉。
    2. IV值前面的 ( p y i − p n i ) (p_{y_{i}}-p_{n_{i}}) pyipni其实反映出了该分组的有响应和无响应分别占总体的比例,也就是如果某个分组样本占总体数量比较低,那么对预测其实贡献也是比较低的,所以会给WOE基础上再打个折。
  3. 特征选择方法
    https://www.cnblogs.com/wzdLY/p/9689547.html
    1. wrapper(根据目标函数,每次选择若干特征,活着排除若干特征)
      递归特征消除法:使用基模型进行多轮训练,每轮训练结束后,消除若干权值系数的特征,再使用新的特征进行下一轮训练。
    2. embedded(先使用某些机器学习算法训练模型,得到各个特征的权值系数,再有大到小进行特征选择)
      基于惩罚项的特征选择法
      基于树的特征选择法
    3. filter(根据发散性活着相关性对各个特征进行评分,设定阈值或者特征个数,选择特征)
      1. 卡方检验(作为分类问题的分类变量的筛选方法)

      2. 互信息(作为分类问题的分类变量的筛选方法)

      3. 方差选择法(连续变量):计算每个特征的方差,根据阈值,选择方差大于阈值的特征进行训练;

      4. 相关系数(皮尔森相关系数)
        在这里插入图片描述

LR的损失函数是什么?线性回归损失函数是什么?
  1. LR在估计参数的时候常用是极大似然估计,其损失函数对数损失函数
  2. 对数似然函数和交叉熵函数在二分类的情况下形式是几乎一样的;
  3. 注意⚠️:LR的损失函数是对数似然函数加负号
  4. 线性回归的损失函数是平方损失函数
  5. 为什么线性回归使用平方损失函数?是因为使用平方形式的时候,使用的是“最小二乘法”的思想,这里的“二乘”指的是用平方来度量观测点与估计点的距离(远近),“最小”指的是参数值要保证各个观测点与估计点的距离的平方和达到最小
  6. 最小二乘法以估计值与观测值的平方和作为损失函数,在误差服从正态分布的前提下,与极大似然估计的思想在本质上是相同。(推导)
    在这里插入图片描述
朴素贝叶斯公式是什么,前提条件是什么?


前提:朴素贝叶斯法假设条件概率分布条件独立的。

然后指出我之前项目中,由于训练样本较少,又用的NB算法,效果肯定不会这么好(明里暗里质疑我项目的真实性,项目都上线了,有什么好争辩的)

word2vec介绍一下,其中投影矩阵是如何求得的?

在这里插入图片描述

总结

这次面试在面试问题之外,我还发现了以下几个问题:

  1. 面试官瞧不起专硕的,瞧不起没发文章的,瞧不起实验室不是做算法的(没错说的就是我)
  2. 尽可能多的给面试官展现自己的优势,自己实验室的优势,有时候实话实说未必是好事
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值