大数据开发面试总结

上海合合实习面试

一面(电话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”

String a = “as"是在字符串常量池中建立"as”;String a = new String(“as”)是在堆中建立
举例:
String s1 = “hello”;
String s2 = “hello”;
String s3 = s1;
String s4 = new String(“hello”);
String s5 = new String(“hello”);
那么:
s1 == s2; true
s1 == s3;true
s1 == s4;false
s1 == s5;false
s4 == s4;false

s1.equals(s2);true
s1.equals(s3);true
s1.equals(s4);true
在这里插入图片描述

用这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、java是怎样避免hash冲突的?

9、图的存储方式

10、归并排序

11、spark的运行流程

12、有哪些shuffle算子

13、reducebykey和groupbykey的区别

14、写SQL

在这里插入图片描述变成
在这里插入图片描述

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

星环科技面试

1、设计模式中的单例模式

海康威视

1、spark的YARN-CLIENT和YARN-CLUSTER的区别

(1)client的driver是运行在client客户端;cluster的driver是运行在App Master

(2)client中连接断了,任务就挂了;cluster断开,任务不受影响
解释:SparkContext初始化不同,导致了Driver所在位置不同,YARN-CLUSTER的driver是在集群的某一台NM上,但是YARN-CLIENT就是在driver所在的机器上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值