前几天去融360面试了,面试过程还是比较轻松的,面倒的问题以及我个人的回答如下,如果有错误的地方,还请大家进行更正,谢谢!
一面:
1、Sql语句:有一个用户表(user),有一个订单表(order),用户表上有用户的注册时间,找到每个用户在注册时间之前的最后一笔订单,假设不需要注册也能下单。
这道题leetcode上有一道类似的题(https://leetcode.com/problems/department-highest-salary/#/description)
而且我在滴滴数据分析岗位面试的时候也遇到过。上次我的回答类似于
select 字段 from tableA,tableB where tableA.id=tableB.id group by tableA.id order by time limit 1
但是这个回答是错误的,有一定数据库基础的同学知道,这样只能返回一条数据,而不是每个人各有一条数据。
所以这次我是这么回答的,面试官说没问题,那么应该是对的吧:
select 字段 from order where order_time in (select max(order_time) from user, table where user.id = table.id and to_days(user.order_time) < to_days(user.sign_time) group by user.id)
这里我用到了一个子查询,子查询返回了用户注册前最后一笔订单的时间的和,即每一位用户有一个时间。然后外层查询查询出对应的订单信息即可。
2、分类算法之间的区别
3、逻辑回归的损失函数,以及原理
这里参考我写的另一篇文章:http://www.jianshu.com/p/949338f6a1dc
4、LR与SVM的对于数据的要求有何区别
这道题我没答好,不过最后兄弟告诉我了这样一个答案,我觉得挺好:LR要求所有的点尽量远离分类超平面,而SVM只要求支撑向量远离即可
二面:
1、SVM的损失函数,SVM的原理简单介绍
有关SVM的损失函数,参考博客:https://plushunter.github.io/2017/07/08/机器学习算法系列(24):损失函数/
2、决策树信息增益的公式
参考我的另一篇文章:http://www.jianshu.com/p/8c4a3ef74589
3、二分查找
这个就不用多说了吧,大家都懂的。