面试中必须要会的知识点

1、项目都分析过哪些业务模型

参考各个需求文档:

  • 离线的报表(展示量,点击量,点击率,参与竞价数,竞价成功数,消费)
  • 终端设备分析(运营商,联网方式,操作系统,客户端)
  • 渠道分析
  • 媒体分析
  • 统一用户识别
  • 数据标签化
  • 用户上下文标签合并
  • 图计算再次合并标签
  • 把标签存入HBase,再次合并标签 --> 数据到了HBase以后,就到了精准营销部门
2、项目中的知识点
1)parquet文件存储(列式存储)

a、可以跳过不符合条件的数据,只读取需要的数据,降低IO数据量

b、压缩编码可以降低磁盘存储空间,由于同一列的数据类型是一样的,可以使用不同的压缩编码。

c、只读取需要的列,支持向量运算,能够获取更好的扫描性

d、parquet 适配多种计算框架,查询引擎(Hive,Impala,Pig,IBM Big SQL);计算框架(MapReduce,Spark,Kite,Cascading等等);数据模型(Avro,Thrift,Protocol Buffers等)

2)Spark算子运算

Map,flatMap,filter,case,groupBy,reduceByKey等。

3、面试中最常问的问题
1)首先简单的介绍一下自己的情况(一分钟的自我介绍)
2)介绍一下项目的情况(主要想观察你对项目了解多少)

答:我们做过一个DMP项目,用户画像,根据用户社会的一些特有属性,生活的习惯和一些消费行为等信息,从而抽象出一个标签化的用户模型。通过用户的调研去了解用户,然后根据他们的目标,行为和和观点的差异,将他们分为不同的类型,从而可以做一些精准的营销。

3)你们的这个项目用到哪些技术?用的是哪些版本?

答:

hadoop:2.7.5

Spark:Spark2.0

Java:java8

Scala:Scala2.11

4)你在开发过程中遇到了哪些问题?

答:

数组越界,堆溢出,栈溢出,还有版本冲突。

5)你们开发团队有多少人并说说他们干的什么活?小团队

答:一般是6 - 7人的团队

一个人运维

一个人ETL的活和Hive

两个Spark的活

一个前端

一个领导

一个实习生

6)你在公司里干什么活?平时做的项目需求?

答:

主要是Spark的活

7)说说你的上一家公司?一定不要说上一家坏话

答:

公司的领导在我进公司的时候给了我很多的帮助,公司的人也非常的照顾我,公司还有免费提供的共享区域,有零食,咖啡等;

8)为什么要离职?

答:

公司发展挺好的,但是太烧钱了。但是呢,公司的运行还是不太规范,社保也没有给缴;

9)你说说对我们公司的认识?(小公司会问)

答:

10)你未来两到三年的规划?

答:

我想继续在大数据这块领域发展,并希望自己可以谋求一个更资深的职位。从我们的谈话中,我认为这个职位给了我学习新技能的机会,而这可以帮助我提高自己。我也希望可在在公司里担负更多的职责,我也有信心能对团队做出积极的贡献,令公司取得更多的成功。

11)你们这个项目写了多少行代码?一共多少个文件?写了多长时间?

答:

40多个文件,每个大概是70 - 100行左右

12)你们公司的集群多大,配置如何?(50个节点以内)

答:

一共18个节点

128G内存,(20 + 2 * 1T) 浪潮/戴尔/联想/IBM

20(数据盘)+2(系统)块硬盘 * 1 T(一个节点,一台机器)

13)你们公司有测试集群吗?多大?

答:

50个节点 -> 4台测试

20个节点 -> 3台测试(HA,分布式的效果)

14)每天的数据量有多大?压缩前后比例是3:1

答:

压缩前:150G左右

压缩后:40G左右

15)每天有多少条数据?

答:

5千万左右数据

16)每条数据多大?

答:

1KB左右

17)每条数据有多少个字段?有哪些字段?

答:

90个字段,用户ID,浏览器名称,日期,运营商名称,运营商ID,省份名称,城市名称,用的电脑型号,消费习惯,生活区域。我们架构的时候提前把这些设置好,以备使用;

18)你们的数据保留周期是多少?

答:

一个月

集群一定要存的下这个值:(30 * 每天的数据量 * 3个副本)

20)你们公司一天跑多少个脚本?

答:

60左右,20个是常态化的脚本

21)跑一个脚本需要多长时间?

答:

5分钟左右

3-6分钟:太快了吧 。(我们调优做得好,我们集群性能也不错)

10分钟:太慢了吧。(我们集群性能不是很好)

22)当一个项目问到了一些需求?

答:

实在说你清楚的时候,就说是同事做的。

23)必须要会的代码(具有一票否决权)

答:

手写冒泡排序
package bihuidedaima;

import java.util.ArrayList;

public class Maopaopaixu {
    public static void main(String[] args) {

       int [] n = {2,33,4,1211,55,332};
       int temp;
       for (int i = 0; i < n.length; i++){
           for (int j = 0; j < n.length - i -1 ; j ++){
               if (n[j] < n[j + 1]){
                   temp = n[j];
                   n[j] = n[j+1];
                   n[j+1] = temp;
               }
           }
       }
       for (int a : n){
           System.out.println(a);
       }


    }
}

手写wordcount

package bihuidedaima

import org.apache.spark.{SparkConf, SparkContext}

object Wordcount {
  def main(args: Array[String]): Unit = {

    val conf = new SparkConf()
    conf.setAppName(s"${this.getClass.getSimpleName}")
    conf.setMaster("local")

    val sc = new SparkContext(conf)

    val path = sc.textFile("G:\\Scala\\spark1711\\0512第十九天\\wordcount.txt")
    path.flatMap(line =>{
      line.split(",").map((_,1))

    }).reduceByKey(_+_)
//      .foreach(println(_))
      .saveAsTextFile("G:\\Scala\\spark1711\\0512第十九天\\aa.txt")
  }
}

手写单例模式

package bihuidedaima;

/**
 * 饿汉式:类加载时,静态变量就存储一个对象
 */
class Window{
    private static Window win = new Window();
    private Window(){

    }
    public static Window getInstance(){
        return win;
    }
}
public class danlimoshi { 
    public static void main(String[] args) { 
        Window window = Window.getInstance(); 
        Window window1 = Window.getInstance(); 
        System.out.println(window); 
        System.out.println(window1); 
    }
}
package bihuidedaima.单例模式;

/**
 * 懒汉式:类加载时,没有指定对象,只有在应用的时候才去创建对象
 */
class Window2{
    private static Window2 window2 = null;
    private Window2(){

    }
    public static Window2 getInstance(){
        if (window2 == null){
            window2 = new Window2();
        }
        return window2;
    }
}
public class danlimoshi2 {
    public static void main(String[] args) {

        Window2 win1 = Window2.getInstance();
        Window2 win2 = Window2.getInstance();
        System.out.println(win1);
        System.out.println(win2);

    }
}


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值