嘉云数据社招面经(JAVA大数据开发)
嘉云数据社招面经(JAVA大数据开发)
1、介绍项目及工作经历(略)
2、介绍公司的大数据架构(来源、中间件、落地、采用的数据介质)
3、scala隐式转换中隐式类和隐式方法有什么区别、隐式转换怎么实现的?
4、scala的类继承关系,和Java的异同点。
5、scala可变和不可变对象有什么区别?为什么要这样定义?何谓函数式编程?可变集合中,不可变集合.builder和Buffer类集合有什么区别,底层怎么实现的?
6、为什么在scala中没有包装类了?
7、spring中,IOC的原理?如何解决循环依赖的问题?Bean对象的生命周期?
8、java集合类,conCurrentHashMap原理(分段锁,如何实现线程安全,解锁要按顺序吗?)HashTable、HashMap、LinkedList、ArrayList底层实现
9、synchronized分别修饰在实例方法上和静态方法上,多线程并发时是否会竞争锁?synchronized修饰在方法上和代码块上有什么区别,底层是怎么实现的?Lock接口的实现类ReentrantLock和synchronized有什么区别?ReentrantReadWriteLock呢?
10、线程池一整套(实现类及对应的阻塞队列、拒绝策略、具体参数、ScheduledThreadPool有三种构造方法,分别代表什么含义?)
11、Redis用过哪些数据结构?介绍底层实现。获取所有Key的命令是什么?为什么生产环境不推荐使用?
12、spark任务提交之后过程?怎么划分不同的stage?宽窄依赖的划分除了RDD之间的关系,还有什么判断依据?怎么判断spark产生了数据倾斜?数据倾斜的时候解决策略有哪些?join两个表的时候,大表大表及大表小表分别怎么处理?源码中任务分发有什么策略?