2022面试题——多线程总结(1)

欢迎收藏关注,参考答案近期更新

  1. 谈谈你对CAS的理解,有什么缺陷,怎么解决
  2. 实现线程的方式有哪些?每种的启动方式是什么?
  3. runnable和thread创建线程的区别
  4. java的线程有几种状态?
  5. 阻塞是怎么产生的?
  6. callable和runnable接口的区别
  7. 一般用哪种方式创建线程,为什么?
  8. 操作线程是怎么进行线程切换的?
  9. 说一下多线程的锁机制?
  10. synchronized原理,monitor exit enter原理,锁升级的过程
  11. synchronized的偏向锁是怎么实现的?
  12. synchronized用到static和不用static的区别
  13. synchronized(this) 和 synchronized(this.getClass)的区别
  14. lock的底层原理
  15. synchronized和lock的区别,分别在什么场景下使用
  16. CLH、MCS,都是怎么实现的公平锁,代码是什么样?
  17. java中锁的分类
  18. 可重入锁和不可重入锁的区别,可重入的原理?
  19. 谈谈对公平锁的认识?
  20. 多线程的死锁是什么,怎么避免?手写一个死锁伪代码?
  21. volatile关键字的使用及原理
  22. volatile和synchronized的区别
  23. CompletableFuture的实现原理
  24. wait和sleep的区别
  25. threadLocal的原理,Threadloacl源码
  26. ThreadLocal 的实现中还有黄金分割点的使用,你知道吗?
  27. 常见的线程池有哪些?
  28. 线程池的核心参数详解,future的异步通知机制
  29. 线程池的工作原理,拒绝策略有几种?线程池的保活机制
  30. 一般设置多少核心线程数,核心线程数的设计策略?
  31. 线程池参数怎么配置?为什么这么配置?做过压测吗?遇到过线程池拒绝的情况吗?怎么处理的?
  32. 线程池聊一下放不下了有什么处理方式
  33. 线程池内部结构
  34. 线程池的启动原理
  35. 线程池方式创建线程那里面线程的生命周期是怎样
  36. 基于线程池的原理,ThreadPoolExecutor在任务调度过程中的,分配任务,执行任务和拒绝任务的流程
  37. 基于上个问题,解释下非核心线程延迟死亡,发生在什么情况下,核心线程什么情况会假死,这个时候怎么去释放核心线程,非核心线程怎么成为核心线程的
  38. 生产环境线程池根据哪些指标调优
  39. 多线程并发执行,怎么获取执行效率最好的那个线程,有什么框架可以替代获取上面那个线程
  40. 了解timer或者线程池那个定时队列么,讲讲他们的实现底层的不同
  41. 常见的阻塞队列有哪些?
  42. 了解queue么,怎么实现的,实现一遍先进先出的逻辑
  43. 定义一个countdownlatch,多线程启动之后,计数减少,进入wait状态,直到计数为0后,多线程再同时启动。
  44. Cron表达式在分布式任务调度里面,怎么实现动态的配置,基于什么实现的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,下面是对大数据面试题——spark面试题(一)的回答: 1. 什么是Spark?它与Hadoop有什么区别? Spark是一个快速、通用、可扩展的大数据处理引擎,它可以在内存进行数据处理,因此比Hadoop更快。与Hadoop相比,Spark的优在于它可以在内存进行数据处理,因此速度更快,而且它支持更多的数据处理方式,例如流处理、图形处理等。 2. Spark的核心组件有哪些? Spark的核心组件包括Spark Core、Spark SQL、Spark Streaming、MLlib和GraphX。 3. 什么是RDD?它有哪些特? RDD是Spark的一个基本概念,它代表一个不可变的分布式数据集合。RDD具有以下特: - 可以在内存进行计算,因此速度快; - 支持多种操作,例如map、reduce、filter等; - 可以进行持久化,以便在后续计算重复使用。 4. Spark的map和flatMap有什么区别? map和flatMap都是RDD的转换操作,它们的区别在于: - map操作对每个元素进行转换,返回一个新的元素; - flatMap操作对每个元素进行转换,返回一个包含多个元素的序列。 5. 什么是Spark的shuffle操作? Spark的shuffle操作是指将数据重新分区的操作,它通常发生在reduce操作之前。Shuffle操作会将数据从多个节上收集到一个节上,然后重新分区,以便进行后续的计算。 6. Spark的cache和persist有什么区别? cache和persist都是将RDD持久化到内存,以便在后续计算重复使用。它们的区别在于: - cache操作默认将数据持久化到内存,而persist操作可以指定将数据持久化到内存、磁盘或者其他存储介质; - cache操作是persist操作的一种简化形式,它默认将数据持久化到内存,并且只能持久化到内存。 7. Spark的reduceByKey和groupByKey有什么区别? reduceByKey和groupByKey都是对键值对RDD进行操作的函数,它们的区别在于: - reduceByKey操作会在每个分区内先进行本地聚合,然后再进行全局聚合,因此效率更高; - groupByKey操作会将所有的键值对都进行网络传输,然后在一个节上进行聚合,因此效率较低。 8. Spark的broadcast变量有什么作用? broadcast变量是一种只读的变量,它可以在所有节上共享,以便在计算过程使用使用broadcast变量可以避免在网络上传输大量的数据,从而提高计算效率。 9. 什么是Spark的checkpoint操作? Spark的checkpoint操作是将RDD持久化到磁盘上,以便在后续计算重复使用。与cache和persist不同的是,checkpoint操作会将数据持久化到磁盘上,以便在内存不足时可以从磁盘上恢复数据。 10. Spark的Task是什么? Task是Spark的一个基本概念,它代表一个可以在一个节上执行的计算任务。Spark将一个RDD分成多个分区,每个分区对应一个Task,这些Task可以并行执行,以提高计算效率。 ### 回答2: 今天我们来讨论一下关于Spark大数据面试的一些常见问题。Spark是一种基于Hadoop的开源计算系统,它能够快速处理大规模数据,并且支持多种编程语言,包括Java、Scala和Python等。以下是一些Spark面试题及其答案: 1. Spark有哪几种部署模式? Spark有三种部署模式,分别是本地模式、集群模式和分布式模式。本地模式指的是在本地运行Spark应用程序,不需要连接到外部计算机。集群模式指的是单个Spark集群环境,它由一组Spark节组成,可以在数据心或云运行。分布式模式指的是使用多个Spark集群并行处理大规模数据。 2. Spark和Hadoop的区别是什么? Spark和Hadoop都是处理大规模数据的工具,但它们有一些区别。首先,Spark处理数据速度快,因为它将数据存储在内存,而Hadoop则将数据存储在磁盘。其次,Spark支持更多的编程语言,包括Java、Scala和Python等,而Hadoop只支持Java。此外,Spark具有更好的机器学习和图形处理功能,可以更好地支持大规模数据分析。 3. Spark的RDD是什么? RDD是Spark重要的概念,全称为Resilient Distributed Dataset。它是一个不可变的分布式数据集合,可以分区存储在不同节上,并且每个分区都可以在并行处理进行处理。RDD支持两种操作,即转化操作和行动操作。转化操作将一个RDD转换为另一个RDD,而行动操作返回一个结果或将结果输出至外部系统。 4. Spark的优化技术有哪些? Spark优化技术包括数据本地化、共享变量、宽依赖和窄依赖、缓存和持久化,以及数据分区等技术。数据本地化将数据存储在尽可能接近计算节的位置,以减少网络传输的开销。共享变量将常用的变量通过广播或累加器的方式在节共享,从而减少网络传输量。宽依赖和窄依赖指的是在转化操作RDD之间的依赖关系,窄依赖表示每个父分区最多与一个子分区有关联,而宽依赖则表示多个子分区可能与多个父分区关联。缓存和持久化技术可将RDD保存在内存,从而加速访问速度。数据分区可以将数据划分为较小的块进行并行处理。 5. Spark Streaming是什么? Spark Streaming是Spark的一个扩展模块,它支持实时数据流处理。Spark Streaming可以将实时数据流以微批次方式处理,每个批次的数据处理平均耗时只有几秒钟。Spark Streaming可以将数据存储在内存或磁盘,同时支持多种数据源和数据输出方式。 以上是关于Spark大数据面试题的一些回答,希望能够对大家有所帮助。如果你想深入学习Spark和大数据处理技术,可以考虑参加相关的培训课程或在线课程。 ### 回答3: Spark是一个分布式计算框架,它可以使大规模数据处理更加高效和便捷。因此,在企业招聘大数据领域的人才时,对Spark的技术能力要求越来越高。以下是Spark面试题的回答: 1. Spark有哪些组件? Spark框架由三个核心组件组成:Spark Core、Spark SQL和Spark Streaming。此外,还有Spark MLlib、Spark GraphX、Spark R等个别不同的子组件。 2. 什么是RDD?与Dataframe有什么区别? RDD(弹性分布式数据集)是Spark的核心数据抽象,是不可变的分布式对象集合。RDD可以从文件读取数据、从内存读取数据、并行修改数据等。而Dataframe和RDD类似,但是Dataframe更加强大,因为它是带有结构化的RDD。Dataframe在处理大规模结构化数据时非常有效和便捷。 3. Spark如何处理缺失数据? Spark提供了两种处理缺失数据的方法:第一种是使用DataFrame API的na函数,可以删除或替换缺失值;第二种是使用MLlib的Imputer类,可以将缺失值替换为均值或位数。 4. 什么是Spark的任务(task)? 一个任务是Spark作业的最小执行单位。Spark集群上的作业被划分为多个任务,这些任务可以并行执行。 5. Spark的shuffle操作是什么?它为什么是昂贵的? Spark的shuffle操作是将一组数据重新分配到不同计算节上的操作。Shuffle操作可能会导致大量数据的磁盘写入、网络传输和数据重组,这些都是非常昂贵的操作。因此,它在Spark集群是一个相当昂贵的操作。 6. Spark的Partition有什么作用? Partition是Spark的数据划分单位。它可以将数据分成多个块并对每个块进行处理。Partition 可以提高 Spark 的并行度和运行效率,因为它可以将大规模数据分成多个小块,并在集群的多个计算节上并行处理数据。 总而言之,Spark是大数据领域使用最广泛的计算引擎之一,其技术理念和应用场景非常广泛。对于求职者而言,掌握 Spark 的基本概念和技术特,提高对 Spark 的理解和应用能力,将有助于更好地处理和分析大规模数据集。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值