1. 如何根据达人营销业务来制定指标体系? 首先反问核心指标是什么?了解核心指标之后,才能基于指标拆解来搭建指标体系。 面试官回复核心指标是GMV,这是一级指标(北极星); 然后基于二级指标拆解出GMV = 流量 x 点击率 x 转化率 x 客单价; 然后再基于维度拆解 or 链路拆解两种方式拆解不同的指标,例如流量,因为处于转化链路最顶部,因此可以采取维度拆解,而因为做的是本地生活,因此品类是一个重要的维度(酒旅,餐饮等),其次城市等级也是流量所需要关注的维度,例如可能线下BD在三四线城市发力推广,导致我们低线城市用户增加,从而提升了整体流量。 2. 字节本地生活相较于大众点评,你认为有什么区别? 使用场景不同:用户在抖音上看本地生活广告时,主要是种草—>购买,而大众点评主要是搜索—>购买。因此大众点评更多还是工具化的一个产品,没有起到跟用户一起决策的作用。 算法优化重点不同:因为使用场景不同,所以抖音应该更注重推荐,而美团更应注重搜索排序算法优化。 内容形式不一样:视频内容相较于图文更有真实感,更利于建立信任感,虽然大众点评也已经在发力视频了,但是整体还是以图文为主。 3. 使用过什么产品?你认为它主要的问题是什么?如何改进? 使用过B站,主要问题在于内容重复度有的时候过高。 那么首先应该得明确好,你所认为的问题是一个问题,那么就要确认下问题的影响用户范围多大。首先要定义什么是重复,如果拿视频信息然后采用embedding算法来压缩信息,然后再计算两个内容之间的余弦距离,则太慢了。我们做数据分析也得考虑MVP(最简可行产品),最简单度量重复度的就是两个视频带的话题是否是一样的,如果一样的则视为重复。然后看下用户完播率的流失曲线随着重复的内容个数的变化,然后确定用户大概看了多少个视频整体完播率出现大幅下滑,然后再用这部分用户数量除以总体的话用户数量即可明确影响范围。
10 1

相关推荐

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道真题和解析
点赞 评论 收藏
分享
牛客网
牛客企业服务