阿里巴巴实习电话面试
面试时间:2018年4月2日14:00;
部门:风控+机器学习;(数据挖掘+业务分析专家);
面试持续时间:44分钟;
面试结果:电话面试就挂掉了(心疼)
准备流程:
- 根据前一次的谈话判断需要复习:机器学习算法+深度学习算法;
- 了解阿里风控所做的事情;
- 正常行为+异常行为的判别;
以下为面试之前的知识点复习以及问题总结:
问题1:黑灰产业链的分类与防范模型
灰黑产业分类:
- 技术灰黑产业:软件、平台、场所、聊天工具
- 源头性灰黑产业:恶意注册、虚假认证、交易
- 各类犯罪行为:诈骗、盗号、炒信
防范模型构建:
数据类型:10年灰黑产业链的情报收集
过程:研究–>用户行为分析–>大数据模型–>一整套数据驱动的风控技术体系
问题2:B2C的推出目的?
- 获得完整的贸易信息,积累数据,为后续信贷服务;
- 银行线下风险团队的强大,尽调和省察面面俱到,但这是静态的,事后的,只反应一个或者多个时点的状态(一年采集两三次data)
- 只有动态的贸易流才反映实际风险状态和风险变化趋势。但动态分析更多地偏向于客户需求分析,而不是风控。
- 银行对风险的judgement始终是在前端,从客户准入、授信额度的审批、具体放款条件的落实、贷款的定价,都是为了在房贷前就确保这笔业务不出问题。基于此,建立在历史数据上的静态分析模型是足够可靠的。
问题3:支付宝如何依靠大数据做风险控制?
- 一般基于大数原则,定规则,筛异常。
- 银行:偏向于纯风险控制,大额贷款,确保业务安全迅速的发展,无业务,不风控。
- 支付宝:偏向于客户行为&交易,小微金融,防范风险。
问题4:经济、金融信用问题
去探索原因,从机器学习的角度讲,我需要找到影响目标的那些变量,所以总是从简单的机器学习算法开始。复杂算法有黑箱,很难搞清楚predictors和target的因果关系。
问题5:为什么要用lasso
在多因子模型中,我们需要对变量进行选择。Lasso可以将没有作用的变量过滤掉,当调节参数的λ足够大时,L1 惩罚项具有将其中某些系数的估计值强制设定为0的作用。Lasso构建的关系是线性的,每个选中的变量的系数具有意义,这些系数代表了变量与目标的变化率,比较直观,一目了然。
问题6:数据分析方法?
关联分析、分类分析、预测分析、时间序列分析、神经网络分析等
问题7:阿里金融进行信用评级的数据来源
(支付交易数据):淘宝、天猫、支付宝
(销售数据):卖家提供
(生活数据):银行流水、信用卡还钱、新浪微博(社交信息)、水电缴纳、结婚证
问题8: 数据多就是大数据?
“数据多”并不是大数据,能够利用IT先进技术将碎片化的信息整合起来,才能真正形成有用的大数据。征信的基本过程也是将分散于不同信贷机构看似用处不大的局部信息整合成为完整描述消费者信用状况的全局信息。
问题9:基于机器学习的分析模型(10个)
AI+Model+Bigdata:还款意愿模型、还款能力模型、身份验证模型、欺诈模型、预付能力模型等
例子:
Step1、对每位信贷申请人的超过1万条原始信息数据进行分析;
Step2、得出7万个可以对其行为作出预测的指标;
Step3、可在5秒内全部完成(速度要求)
问题10:大数据公司的产品类别
降低金融信贷风险
帮助做决策判断和市场营销
问题11:ZestFinance对中国征信业的启示
1、 征信勿以“惩罚性”为目的。假定均为“好人”,不设黑名单,进行有罪推理,虽然可能简单有效,但征信的作用不仅是“惩戒失信”,更重要是褒扬诚信;
2、 定位于特定服务人群:合理定位&深入理解服务对象是关键;
3、 加强信用分析模型的开发:多角度学习的预测模型,及时更新,不断细化;对Data的理解,消费者理解和数据挖掘技术的掌握在建模过程中均不能省。
问题12:了解深度学习的算法么?
复杂的算法,以及深度学习可以抓住复杂的关系,我们是可以试试的,都是开源的算法,但更加重要的事是理解应用背景,我们才能有足够的知识去判断什么算法,对我们手里面的问题是最好的。
问题13:AI(DL)和ML(LR)在征信大数据上的区别
DL的优势:
- 可以通过复杂的推理,在大数据中找到不明显的东西,而往往这些特殊的,或者个别的才最重要。LR过于教条,需要对数据强行结构化,容易消磨数据的真实性;
- DL在训练时能够兼顾更多变量之间的交互情况。LR更多考虑单个变量,但对借款人的可解释性更强;
大数据+ML:利用大量用户金融交易行为类数据,通过机器学习方法,建立模型,预测用户信用情况,给出不同形式的反馈结果;
大数据+AI:
注:AI补充ML的不足,驱动征信业的发展
- DNN:深度训练,分析用户信贷类数据,分析多个变量之间的交互;
- NLP:只能问答系统,只能机器人解决信贷者的疑问;
- 知识图谱:解决反欺诈,不一致验证,团伙欺诈;
- 集合学习:多个单一模型相互作用。重点找到:互补关系;
问题14:CNN(卷积神经网络)RNN(循环神经网络)DNN(深度神经网络)
感知机:输入层(特征向量)– 隐含层(多层感知机就是神经网络)– 输出层;
注:层数多导致“梯度消失现象”
DNN:全局链接DNN(下层神经元与上次神经元均能链接)。导致:过度拟合,局部最优解,参数数量膨胀;
RNN:DNN无法对时间序列上的变化进行建模,发展出了RNN;
CNN:不是上下层神经元均连接,通过卷积核作为中介,降低参数个数;
(紧张,忐忑,这是第二次电话面试阿里)
(大概回顾面试中几个大的问题)
1. 请你自我介绍一下(介绍的很没有逻辑性,主要就说自己以前做的项目和现在要应聘的风控是相关的,所以自己很适合)
2. 你在大学读的学校情况比较复杂,可以说一下情况么?(主题思想:自己为了争取机会,带着目标去学习)
3. 介绍一下你做过的最有成就感的项目?(面试官很抠细节,而我自己浮于表面。把一个自己构造的公式忘掉了。在平时,描述项目的时候,用词也不够专业,没有条理,导致项目阐述的也不是很清楚。平时就要培养描述项目的能力,学着自己问自己问题。)
4. 算法:有一个很大的数组,存的均为整数,求N个最大值。给出算法以及时间复杂度?(我的回答比较蠢:冒泡排序?二叉树?但是都被面试官否定了。他提示我快排、堆排序,但是我也没有想到改进版)
5. 操作系统:死锁的概念,以及如何避免:(我举了一个例子,但是具体概念不清楚。可想而知,我真的是什么都没有复习。面试BAT这种技术公司,基础学科的知识点,真的是要通过刷题来巩固啊!!!!!!!!!)
6. 你还有什么问题问我么?(这个部门做风控主要做什么方面?这个部门也不仅仅做风控。我们主要做两个事情:1、智能化,建立深度模型,提高传统模型效率;2、偏向于服务的风控,比如金融服务,花呗,借呗存在的信用风险)(那你们建立模型的时候会将两个或者多个具有互补关系的模型,柔和在一起完成一个目标么?我们在建立模型之前都已经有了很明确的目标,所以一般都不会凑合在一起做。)
补充死锁:
什么是死锁?
死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。例如,在某一个计算机系统中只有一台打印机和一台输入 设备,进程P1正占用输入设备,同时又提出使用打印机的请求,但此时打印机正被进程P2 所占用,而P2在未释放打印机之前,又提出请求使用正被P1占用着的输入设备。这样两个进程相互无休止地等待下去,均无法继续执行,此时两个进程陷入死锁状态。
死锁产生的原因
- 列表项目系统资源的竞争:系统资源的竞争导致系统资源不足,以及资源分配不当,导致死锁。
- 进程运行推进顺序不合适:进程在运行过程中,请求和释放资源的顺序不当,会导致死锁。
产生死锁的四个必要条件:
- 互斥条件:一个资源每次只能被一个进程使用,即在一段时间内某 资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。
- 请求与保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源 已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。
- 不可剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能 由获得该资源的进程自己来释放(只能是主动释放)。
- 循环等待条件: 若干进程间形成首尾相接循环等待资源的关系
- 注:这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。
死锁避免的基本思想:
系统对进程发出每一个系统能够满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,如果分配后系统可能发生死锁,则不予分配,否则予以分配。这是一种保证系统不进入死锁状态的动态策略。
理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。所以,在系统设计、进程调度等方面注意如何让这四个必要条件不成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态的情况下占用资源。因此,对资源的分配要给予合理的规划。
死锁避免和死锁预防的区别:
死锁预防是设法至少破坏产生死锁的四个必要条件之一,严格的防止死锁的出现,而死锁避免则不那么严格的限制产生死锁的必要条件的存在,因为即使死锁的必要条件存在,也不一定发生死锁。死锁避免是在系统运行过程中注意避免死锁的最终发生。
反思
有幸知道了自己挂掉的原因,第一反应就是:基础知识没有复习,自己做的项目也不了解,逻辑不够清楚……然后开始自我否定。也许这就是找工作需要经历的心理历程吧:面试失败–>自我否定(最痛苦,但却最不应该消极对待)–>自我反省–>再次面试……
感谢面试官,以及鼓励我的人!加油!知己知彼,最难的是知己。别人愿意真正指出你的缺点,而不是骂你,就应该感恩。自我改进。
面试反馈如下:
- 基础方面,问了关于数据结构和操作系统方面的基础问题,回答不好。如TOP N问题,考虑用二叉树来解决,在提示下都没意识到堆排序和快排的改进版;操作系统死锁以及如何防止,概念不清楚等等。(面试技术公司,一定要刷数据结构,操作系统一类的基础题(比如在牛客上刷题),没有准备好,就不要去面试。白白浪费机会。)
- 项目方面,选最有成就感的项目来讲解,整个项目讲解不够逻辑清楚,有点抓不住重点。另外她核心贡献部分,比如指标方面的波动率等,细节回答不上来。(面试之前,准备好涉及到这个项目所有的基础问题,技术细节,不要浮于表面)
- 有一些数据处理方面的经验,但在模型方面偏弱,属于有点了解。(面试的是大数据建模岗位,但是对机器学习,深度学习等算法,不够了解)