携程大数据分析暑期实习面经(给了口头offer)

从牛客面经上找了很多有用的面试经验,对自己也帮助很大,在这里记录一下自己的面试经历,希望能帮助到其他同学~
首先说一下自己的背景吧,本科福建某985,研究生上海某985,应用统计专业,但是本人比较混,几乎没有参加过相关的项目也没有像样的实习经历。

行测:包括阅读理解、报表计算、找规律等题,这里就不深入讲了。

笔试题:1道编程题1道sql,编程题挺快ac了(因为我自己也同时想找算法方向的岗位),sql要求不同用户的最长连续登陆天数😅😅😅😅,想了一段时间才知道方法,最后也有惊无险ac。

4.22 一面:面试官 商旅部门(应该没记错)小哥哥,人超nice,总时长约25min
流程:一、自我介绍
二、你为什么想做数据分析?(因为我简历上的内容多是与机器学习相关的)答:数据分析更······(此处省略几百字)
三、介绍一下你的两个项目?(一个社交网络分析,一个美团商赛的项目)面试官反馈:你的第一个项目(社交网络分析)更偏向于数据挖掘,之后面试的话可以先介绍偏数据分析的项目。
四、如果分析发现,携程酒店订购的客单价降低了,你如何分析?(霹雳哗啦分析了一通,从客户到酒店以及携程内部政策等)面试官反馈:有可能也会是客户购买力不足了。
五、面试官:你会sql吗?我:会。 面试官:那么我们用python写一道编程题吧:给你一个数组,每个元素都是整数,请你把这个数组中的奇数放在前面,偶数放在后面,不要求大小顺序。 我:好的(直接开始写)面试官:你先别急,和我说一下思路。 我:双指针+省略内容 面试官:好的,应该没问题,你不用写了,以前做过这种题吗? 我:没做过,但这个思路比较像其他的题。
六、反问环节:您是哪个部门的?工作内容?

4.25 二面:面试官 似乎是日常部门的?(有点忘记那个词叫啥了)小哥哥,人也很nice,总时长约30min
流程:一、自我介绍
二、问了我简历上的项目
三、之前实习是做什么的?听起来虽然更像是数据仓库? 我:一顿解释
四、数据分析师的工作框架?答:提出问题+多维分析+交叉分析+建模预测+策略+策略落地+复盘
五、面试官:你之前都是统计学的是吧,那专业挺对口的,那你平常做建模去预测回归问题的时候,用线性模型用的多吗?答:我平常做的方向,深度学习用的比较多,因此大部分还是神经网络,因为传统线性模型的基本假设比较难满足(多重共线性与异方差问题),所以线性模型用的比较少,非神经网络的方法用的比较多的则是RF和GBDT(准确来说XGBOOST) 面试官:但你知道,比如在数据分析中,很多时候leader想知道的是变量会带来怎样的影响,如果你用过于黑盒的模型,很难去鉴定某变量的影响。 我:扯了一堆,略。
六、A\B test 初步描述下
七、没让写sql题,和我介绍了以下他们部门的一些工作。
八、反问:工作内容:可能初期会做报表相关的。

4.29 还是 4.30 HR面 电话面试
一、你对携程和携程相关服务评价如何?面试体验?
二、手里有其他offer吗?
三、入职相关介绍
四、给了口头offer,希望我5月7号前答复
(完)

#携程##面经##实习##数据分析工程师#
全部评论
同商旅,同大数据分析哈哈
1 回复 分享
发布于 2021-05-05 13:15
朋友,后来你去携程实习了吗?
点赞 回复 分享
发布于 2021-09-14 09:12
想问下对于黑盒那部分楼主是怎么解释的呀,像深度学习这种的确实比较难解释某些特征情况吧?
点赞 回复 分享
发布于 2021-08-25 14:08
兄弟,哪里投的啊,我咋找不到携程的数分
点赞 回复 分享
发布于 2021-05-24 20:15

相关推荐

04-27 16:50
已编辑
门头沟学院 Java
1. mysql删除表语句是什么?drop和truncate区别?2. 删除一行数据的sql3. 查询一张表所有的数据的sql4. 查询一张表有多少条数据sql。  count(1)和count(*)区别5. i++和++i区别6. 介绍下重载和重写。  构造方法可以重写重载吗?7. arraylist和linkedlist的区别8.解释一下深拷贝和浅拷贝9. 如果有三个线程,我如何能保证顺序执行.方法1: 使用join()join() 方法可以确保一个线程在另一个线程执行完毕后才开始执行。通过合理地调用 join(),可以实现线程的顺序执行。方法2:使用countdownlatch/semaphore方法3: 使用锁和原子类,wait() + notifyAll()方法4: 使用completablefuture10. 如果有一个 T1 线程,想把 T2 线程加到 T1 里面,怎么实现?方法1. 使用join()Thread t2 = new Thread(() -> {    // T2 线程的执行逻辑    System.out.println("T2 线程正在执行");});Thread t1 = new Thread(() -> {    try {        System.out.println("T1 线程开始执行");                // T1 线程在此处等待 T2 线程执行完成        t2.start();  // 启动 T2 线程        t2.join();    // T1 等待 T2 完成                System.out.println("T2 线程已完成,T1 继续执行");    } catch (InterruptedException e) {        e.printStackTrace();    }});t1.start();方法2. 使用future.get()ExecutorService executor = Executors.newSingleThreadExecutor();Future future = executor.submit(() -> {    // T2 线程的执行逻辑    System.out.println("T2 线程正在执行");});Thread t1 = new Thread(() -> {    try {        System.out.println("T1 线程开始执行");                // T1 线程在此处等待 T2 线程执行完成        future.get();  // 阻塞直到 T2 完成                System.out.println("T2 线程已完成,T1 继续执行");    } catch (InterruptedException | ExecutionException e) {        e.printStackTrace();    } finally {        executor.shutdown();    }});t1.start();方法3. 使用countdownlatchCountDownLatch latch = new CountDownLatch(1);Thread t2 = new Thread(() -> {    try {        System.out.println("T2 线程正在执行");    } finally {        latch.countDown();  // 完成时减少计数    }});Thread t1 = new Thread(() -> {    try {        System.out.println("T1 线程开始执行");                t2.start();  // 启动 T2 线程        latch.await();  // 等待 T2 完成                System.out.println("T2 线程已完成,T1 继续执行");    } catch (InterruptedException e) {        e.printStackTrace();    }});t1.start();11. a=a+b 和 a+=b的区别a = a + b,如果 a 和 b 的类型不同(如 a 是 int,b 是 double),需要显式强制类型转换,否则会编译报错。即:double a= 1;int b = 2;a = (double) (a+b); a += b,会自动执行隐式类型转换,将结果转换为 a 的类型。13. 数据库的三大范式如答案有错误欢迎指正
查看24道真题和解析
点赞 评论 收藏
分享
评论
9
91
分享

创作者周榜

更多
牛客网
牛客企业服务