大数据开发面试总结

大数据开发面试总结

  • 上海合合实习面试
    • 一面(电话died)
      • 1、熟悉那些java的list集合
      • 2、ArrayList和LinkedList的区别?
      • 3、JVM的内存
      • 4、类的加载过程
      • 5、python的闭包、魔术方法、__new__、高阶方法
      • 6、java的list集合
      • 7、java的string为什么是不可变的?
      • 8、java的回收器G1
      • 9、有没有调试过spark的源码
      • 10、静态代码块和静态方法哪个先执行
      • 11、静态方法能否调用非静态方法
      • 11、方法重载和方法重写
      • 12、设计模式
      • 13、hive的窗口函数
      • 14、hadoop运行时,会有哪些进程
  • 滴滴实习
    • 1、自我介绍
    • 2、四种java的线程池
    • 3、自定义线程池有哪些参数
    • 4、怎样判断是垃圾?引用计数法的循环问题?
    • 6、HashMap了解吗?结构
    • 7、synchronize底层实现
    • 8、String a = new String("as")和String a = "as"的区别楼上两个说的不完全正确bai
    • 8、树的前序、中序、后序
    • 9、图的存储方式
    • 10、归并排序
    • 11、spark的运行流程
    • 12、有哪些shuffle算子
    • 13、reducebykey和groupbykey的区别
    • 14、写SQL

上海合合实习面试

一面(电话died)

1、熟悉那些java的list集合

hashmap和hashtable
TreeSet和HashSet

2、ArrayList和LinkedList的区别?

ArrayList是基于动态数组的数据结构,而LinkedList是基于链表的数据结构

  1. 对于随机访问get和set,ArrayList优于LinkedList,因为LinkedList要移动指针
  2. 对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据

3、JVM的内存

4、类的加载过程

5、python的闭包、魔术方法、new、高阶方法

6、java的list集合

7、java的string为什么是不可变的?

string类中的三个方法value、offset、count都是private,并且没有提供setvalue、setoffset和setcount等公共方法来修改这些值。
此外,value,offset和count这三个变量都是final的, 也就是说在String类内部,一旦这三个值初始化了, 也不能被改变。

8、java的回收器G1

9、有没有调试过spark的源码

10、静态代码块和静态方法哪个先执行

  • 静态代码块是在项目启动的时候就初始化了
  • 静态方法是在创建对象的时候执行

对象的初始化顺序:

父类静态的内容->子类的静态内容->父类的非静态代码块->父类的构造方法->子类非静态代码块->子类的构造方法
大致顺序:静态代码块->父类非静态代码块和构造方法->子类非静态代码块和构造方法
注:子类的构造方法,不管这个构造方法带不带参数,默认的它都先去寻找父类不带参数的构造方法。如果父类没有不带参数的构造方法,那么子类必须用supper关键字来调用父类带参数的构造方法

11、静态方法能否调用非静态方法

不能,因为静态方法可以在没有创建实例时使用,而申明为非静态的成员变量是一个对象属性,它只有在对象存在时引用,因此如果在对象未创建实例时我们在静态方法中调用了非静态成员方法,自然是不行的

11、方法重载和方法重写

https://blog.csdn.net/geekmubai/article/details/81975990

12、设计模式

13、hive的窗口函数

14、hadoop运行时,会有哪些进程

  1. NameNode:hadoop中的主服务器,管理文件系统名称空间和对集群中存储文件的方法,保存有metastore
  2. secondaryNameNode:帮助NN合并fsimage和edits
  3. DataNode:负责管理连接到节点的存储
  4. ResourceManager:负责调度DataNode上的工作
  5. NodeManager:执行任务
  6. DFSZKFailoverController高可用时它负责监控NN的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上的一个特定接口来获取NN的健康状态。FC也有选择谁作为Active NN的权利,因为最多只有两个节点,目前选择策略还比较简单(先到先得,轮换)。
  7. JournalNode 高可用情况下存放namenode的editlog文件.

滴滴实习

1、自我介绍

2、四种java的线程池

3、自定义线程池有哪些参数

4、怎样判断是垃圾?引用计数法的循环问题?

https://blog.csdn.net/faker____/article/details/83061673

6、HashMap了解吗?结构

7、synchronize底层实现

8、String a = new String(“as”)和String a = "as"的区别楼上两个说的不完全正确bai

String a = “aaa”;
用这du种方式的时候java首先在内存中寻找"aaa"字符串zhi,如果有,就把aaa的地址给它dao
如果没有则创建
String a = new String(“aaa”);
是不管内存中有没有"aaa"
都开辟一块新内存保存它
可以用以下方法验证下
String a = “aaa”;
String b = “aaa”;
String c = new String(“aaa”);
System.out.println(ab);
System.out.println(a
c);
结果应该是:
true
false
https://www.cnblogs.com/aspirant/p/9193112.html

8、树的前序、中序、后序

9、图的存储方式

10、归并排序

11、spark的运行流程

12、有哪些shuffle算子

13、reducebykey和groupbykey的区别

14、写SQL

大数据开发面试总结_第1张图片变成
在这里插入图片描述

SELECT NAME,
       MAX(CASE course WHEN "数学" THEN grade ELSE 0 END)  math_course ,
       MAX(CASE course WHEN "语文" THEN grade ELSE 0 END)  chinese_course
       FROM tb GROUP BY NAME

你可能感兴趣的:(大数据开发面试总结)