昨天我面试了一个人

程序源代码

共 1491字,需浏览 3分钟

 · 2021-08-29

点击上方蓝色字体,选择“设为星标”

回复”面试“获取更多惊喜


有事,短更。
这篇文章是因为今天面试了一个同学,最终没通过,记录一些细节。
我问了一些问题,最核心的几个问题如下:
基础部分
  1. 一个Java对象的内存分配流程是怎么样的?

  2. 集群线上JVM的主要参数有哪些?垃圾回收器用的CMS还是G1,为什么选择G1?

  3. 业务上多线程如何创建线程池,一些核心的参数设定。Spark是多进程模型还是多线程模型?MapReduce呢?大概讲一下一个Spark任务提交会产生哪些进程和线程?

数据组件部分
  1. 产生数据倾斜的根本原因是什么?你是怎么发现产生数据倾斜的以及解决的办法。

  2. Spark如何管理内存的?Spark用到的内存有哪些?以及什么情况下会用到堆外内存?

  3. 你了解的任何一个实时计算框架的任务调度是如何做的?

其他
  1. 设计一个系统,能承担每天百万级别的任务调度。

  2. Spark的back-pressure限流器怎么实现的?你能自己实现一个限流器吗?说说思路。

以上8道题,能回答上来6个就可以了。
但是很遗憾确实相差的有点远。
整体的感觉是,面试者对组件停留在会用层面,在一些简单的业务场景或者成熟的平台下开发完全没有问题,但是遇到难题恐怕难以解决。
另外知识点有些分散,什么意思呢?这也是很多同学的通病,也就是对一个组件没有整体的概念,不清楚来龙去脉,只是停留在使用层面。
每当学习一个组件,一个比较好的学习路径是,了解背景,熟悉常用功能,上手做一个简单的项目,熟悉一个源码和各个模块,然后了解组件本身在使用中会遇到的问题。有些问题你可能没遇到过,那么就需要去社区或者论坛找一下相关资料,看看别人遇到了什么问题,自己尝试复现并解决一下。
另外,最近准备发起一个阅读源码的项目,针对某一个框架的某一个小模块,以学习小队的形式以周或者双周为单位报名进行阅读。我会出一些题目,要求参与人能自己在源码中找到答案,最后产出一篇学习笔记或者博客,不按时完成有惩罚措施。每周抽出2个小时阅读源码,少打一会游戏。坚持下来,相信你会不一样。
项目细节还在思考中,大家有兴趣可以加我微信等细节敲定了酌情报名参加。我的微信号:whispererrr。


八千里路云和月 | 从零到大数据专家学习路径指南

我们在学习Flink的时候,到底在学习什么?

193篇文章暴揍Flink,这个合集你需要关注一下

Flink生产环境TOP难题与优化,阿里巴巴藏经阁YYDS

Flink CDC我吃定了耶稣也留不住他!| Flink CDC线上问题小盘点

我们在学习Spark的时候,到底在学习什么?

在所有Spark模块中,我愿称SparkSQL为最强!

硬刚Hive | 4万字基础调优面试小总结

数据治理方法论和实践小百科全书

标签体系下的用户画像建设小指南

4万字长文 | ClickHouse基础&实践&调优全视角解析

【面试&个人成长】2021年过半,社招和校招的经验之谈

大数据方向另一个十年开启 |《硬刚系列》第一版完结

我写过的关于成长/面试/职场进阶的文章

当我们在学习Hive的时候在学习什么?「硬刚Hive续集」


你好,我是王知无,一个大数据领域的硬核原创作者。

做过后端架构、数据中间件、数据平台&架构、算法工程化。

专注大数据领域实时动态&技术提升&个人成长&职场进阶,欢迎关注。

浏览 16
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报