十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

星环科技秋招笔试复盘:大数据高频考点与避坑指南

星环科技秋招笔试复盘:大数据高频考点与避坑指南 2024年星环科技秋招笔试刚结束那会儿不少学弟学妹在群里吐槽“选择题又多又杂好几个选项看着都对”“明明复习了Spark结果考了一堆Flink和Kafka”“多选题多选一个少选一个都不得分心态直接炸了”。我翻了下他们回忆出来的题目又结合自己当时参加笔试的体验说实话星环的这套选择题确实有点东西。它不是单纯考背概念而是把大数据生态、分布式原理、Java基础、数据库常识、算法思维全部揉在一起用一轮选择题快速筛掉基础不扎实的人。这篇东西我就当是给下一届或者准备冲星环但还在观望的同学留一份复盘笔记把题型分布、高频考点、答题思路、踩坑点一次说清楚。1. 笔试的整体定位与考察逻辑1.1 星环科技笔试考什么星环科技做的是大数据基础软件产品线覆盖分布式存储、分布式计算、实时流处理、数据仓库、AI平台这些方向所以它的笔试选择题基本就是在为这类业务找“底子好”的人。所谓“底子好”我总结下来就三块计算机科班核心知识、大数据技术栈的广度、以及工程场景下的判断力。先说第一块计算机核心知识。这部分最常出现的是Java基础、JVM、并发编程、操作系统、网络、数据结构与算法。看似和你投的“大数据开发工程师”关系不大但星环的TDH平台、分布式计算引擎基本都是Java/Scala栈你对JVM内存模型、线程池、锁、HashMap扩容这些东西的理解直接决定了入职后能不能快速看懂他们的源码、能不能定位线上问题。第二块是大数据技术栈的广度。Hadoop、Hive、Spark、Flink、Kafka、HBase、Zookeeper、ClickHouse、Iceberg这些主流组件基本都会涉及。星环自己也有对应的产品比如分布式分析型数据库、实时计算平台、数据科学平台笔试里会用“通用技术原理”来考你而不是直接考产品功能所以你把社区版玩明白了一样能答。第三块是场景判断力。同样的一个选择题它喜欢给你一个具体场景比如“Kafka消费者组里有4个消费者topic有6个分区请问消费模式是怎样的”这种题光背概念不够你得真知道分区分配的策略知道RangeAssignor和RoundRobinAssignor的区别甚至能推算某个消费者会分到哪几个分区。1.2 题型结构与命题风格从近两年秋招的情况看星环的笔试选择题大概是30到40道限时60到90分钟题型分单选和多选。多选是重灾区因为它会明确告诉你“少选、错选、多选都不得分”也就是说不存在部分给分你只要有一个选项不确定这道题基本就悬了。单选相对友好一点但有一些陷阱题。什么叫陷阱题就是四个选项里三个都是“正确的描述”但题目问的是“错误的是”或者“最不可能的是”。很多同学看到熟悉的选项就直接选了根本没注意题干里的否定词这种丢分特别冤。我根据自己和网友们的回忆大致统计了下题目分布比例是个大概每年会有浮动考察板块大致占比典型考点大数据框架35%Spark、Flink、Hadoop、Kafka、Hive、HBaseJava/并发/JVM20%线程池、锁、内存区域、类加载数据库/数仓15%索引、事务隔离级别、Hive与关系数据库差异分布式理论10%CAP、一致性协议、分区策略操作系统/网络10%Linux命令、TCP连接、进程线程算法与数据结构10%排序复杂度、Hash、树、动态规划合计 100% / /这个分布说明一个问题你如果想靠考前突击一两门课就过笔试基本不可能。它考的是你过去几年有没有认真上课、有没有真正做过项目、有没有在踩坑中把原理搞清楚。我身边能进面试的同学大多数不是那种“刷题机器”而是确实把大数据组件玩过一遍、能讲清楚底层逻辑的人。2. 高频选择题考点深度分析2.1 大数据框架原理远比API重要星环的笔试里大数据框架相关题目占了三分之一左右这部分是我认为最值得花时间准备的。很多人复习大数据喜欢抱着API文档看哪个方法返回什么、参数怎么写但笔试很少考你API细节它考的是组件内部的运行机制。以Spark为例高频考点有这么几个RDD的依赖关系。宽依赖和窄依赖怎么区分窄依赖是每个父RDD分区最多被一个子RDD分区使用宽依赖是多个子分区依赖同一个父分区典型的就是groupByKey、reduceByKey这类shuffle操作。这个知识点还会和Stage划分结合考问你DAG中遇到宽依赖会不会切分Stage。答案是会Spark在ShuffleDependency处划分Stage。Spark的算子分类。transformation是懒加载的action才会触发作业提交。题目可能会给你一段代码问你下面哪个操作会触发真正的计算。此时你只需要记住collect、count、saveAsTextFile、foreach都是actionmap、filter、flatMap、distinct只是transformation。缓存级别。cache默认是MEMORY_ONLYpersist可以选择多种级别题目常问“如果内存放不下数据应该选什么级别”此时选MEMORY_AND_DISK或者MEMORY_AND_DISK_SER是合理答案因为直接丢弃会导致后续需要时重新计算。再说Flink。近几年星环选择题里Flink的题目比例明显上升毕竟实时计算是他们的重点业务方向。我遇到过的考点包括Flink的Exactly-Once是怎么实现的。它依赖Checkpoint机制把状态和偏移量一起做快照配合两阶段提交才能保证端到端的一致性。选项里如果有“通过At Least Once加去重实现Exactly Once”这种说法需要看具体场景不能绝对说错但如果是问“Flink如何实现状态一致性”首选答案一定是Checkpoint。窗口的类型。滚动窗口、滑动窗口、会话窗口的区别以及各自的使用场景。滑动窗口的触发间隔是滑动步长窗口大小除以滑动步长就是窗口重叠的数量这个有时候会有计算题。Watermark的作用。它是用来处理乱序数据的它本身不是真实时间而是表示“小于等于这个时间的数据都已经到了”的推断机制。常考的坑是问“Watermark越大越好吗”正确答案是“需要在延迟和数据完整性之间做权衡”。Kafka的选择题也比较多核心围绕生产者和消费者的行为。我印象比较深的一道题是“一个topic有6个分区消费者组内有3个消费者每个消费者默认订阅整个topic请问每个消费者消费几个分区”如果没特殊配置Kafka默认情况下一个分区只会被组内一个消费者消费所以这里每个消费者理论上分配2个分区。但如果你用的是旧的消费者API或者自己实现了分配逻辑结果就另说了。这就属于“看起来简单实际上考你对默认行为是否清楚”的题。HBase也是常客。RowKey设计原则反复出现比如“查询某用户某时间段的所有订单RowKey应如何设计”。最优答案是“用户ID反转时间戳倒序”反转用户ID是为了避免热点时间戳倒序是为了让最新数据排在前面。还有Region分裂、MemStore刷写、WAL机制这些也是选择题的高频素材。Hive和数仓相关的题重点不是SQL语法而是内部原理。比如“Hive中外部表和内部表的区别”这题算是送分题但如果稍变一下问你“删除表时只删元数据保留HDFS数据应该用哪种表”答案就是外部表。还有分区表和分桶表的区别分区表对应的是目录级别的划分分桶表对应的是文件级别的数据划分后者通常用于抽样查询和Map端Join优化。2.2 Java与并发不光是背面试题星环笔试里Java基础占比大概两成这部分对科班出身的同学来说相对友好但并发和JVM相关题目经常出得比较细比一般的Java面试题要“多拐一个弯”。我印象很深的一道题是关于线程池的。它给你一个场景核心线程数是5最大线程数是10阻塞队列容量是100有12个任务同时提交问最终会有多少个线程在运行。很多人一看核心线程数是5、任务数是12直接选了5觉得超过核心线程数的任务会进队列。但这里有个细节你得清楚线程池的提交策略是优先创建核心线程执行任务核心线程满了之后新任务会进入队列而不是直接创建非核心线程。只有队列也满了才会创建非核心线程直到最大线程数。所以12个任务进来5个被核心线程执行剩下7个进队列线程数只有5除非队列容量也是5或者小于7否则不会触发额外线程创建。还有一个容易出错的点是ThreadLocal。题目问你“ThreadLocal是解决什么问题的”常规答案是线程隔离每个线程有自己独立的变量副本。但如果题干换成“多个线程共享同一个ThreadLocal对象各自set后get到的值是什么”很多人就会犯迷糊。正确答案是每个线程各拿各的值不会串因为ThreadLocal内部是维护了一个ThreadLocalMapkey是当前ThreadLocal实例value是当前线程set进去的值。JVM部分我个人觉得最有区分度的是类加载和内存溢出。类加载那类题最容易翻车的是“双亲委派模型是干什么的”——如果选项里写“避免类被重复加载”这其实不是核心目的核心是防止核心API被篡改保证类加载的唯一性和安全性。内存溢出那类题常见的场景有堆内存溢出、栈溢出、元空间溢出题目会考你哪个参数对应哪个区域堆对应-Xmx和-Xms栈对应-Xss元空间对应-XX:MaxMetaspaceSize。你得能反推看到“java.lang.OutOfMemoryError: Metaspace”知道是哪个区域满了以及可能是哪里出了问题比如动态生成了太多代理类。Java集合的题也不能掉以轻心。HashMap是年年考非线程安全的特性、JDK1.8后红黑树化的条件链表长度达到8且数组长度达到64、默认负载因子0.75、扩容是翻倍这些都是基本操作。但有时候会考得细一点比如让你判断“HashMap的key如果是可变对象且put之后修改了它的hashCode相关字段会发生什么”答案是可能get不到原来put进去的值因为HashMap是根据hash定位桶的key的hash变了桶的位置就变了原来的数据就找不到了。2.3 数据库与分布式理论选择题里的硬骨头数据库部分的题我感觉星环还是用了心的。它没有直接让你写SQL而是通过选择题考你对数据库底层机制的理解而且经常往分布式方向引毕竟他们是做分布式数据库的。事务隔离级别是必考题。四个级别从上到下读未提交、读已提交、可重复读、串行化。常考的是“在可重复读级别下事务A读取某行数据后事务B删除了这行并提交事务A再次读取这个范围的数据时会出现什么现象”。这个需要你对当前读和快照读有概念快照读的话即使数据被删除你在当前事务里还是能看到这一行当前读的话可能就出现幻读了。MVCC和锁也是高频考点。题目可能会给你一个多语句的事务问你某条select语句加不加锁、加什么锁以及update语句的加锁行为。比如正常的select在InnoDB下走的是快照读加的是共享锁吗答案是普通select不加锁只有加了for update或lock in share mode才会加锁。Update和Delete这种修改操作一般会加排他锁如果是范围条件走的是间隙锁或next-key lock还需要结合索引类型来分析。这种题对没有真正调过线上数据库的同学来说确实不太友好因为纯看理论很难串起来。分布式理论里面的CAP是必考。C、A、P分别是什么以及在网络分区时怎么取舍。星环爱考的一个点是“一个分布式系统在发生网络分区时如果要保证分区容错性那么一致性和可用性只能选一个”——这个说法对不对答案是基本对的CAP理论的核心就是在不能同时满足三个特性的前提下网络分区一旦发生你必须做出选择。另外一个常考的点是把CAP和具体系统对应起来比如Zookeeper是CP还是AP答案是CP它优先保证一致性所以如果leader挂了它会短暂不可用去重新选举。Eureka是AP它保证可用性各个节点数据可能短时间内不一致。Redis集群分区时用的是类似AP的策略但如果开启同步写并且用WAIT命令也可以做到强一致这个要看具体配置选项里如果说“Redis一定不能保证强一致”那就错了。2.4 操作系统、网络、算法与Linux这部分大概占两成相对来说比较常规但在秋招笔试里它往往是抢分的关键。因为前面大数据和Java的基础题如果你有一两道拿不准这部分只要平时积累够基本能稳定拿分。操作系统的题进程和线程的区别是常客虚拟内存、页面置换算法偶尔也会出现。有一道题我记得很清楚问“进程和线程的最大区别是什么”选项里有一个是“进程有独立的地址空间线程共享进程的地址空间”这是对的但如果你选“线程比进程更轻量”虽然也对但不能作为最大区别因为它是派生特征。这种题考的是你能不能抓住本质而不是背一堆特性就往上填。网络的题TCP三次握手和四次挥手属于必考星环喜欢在基础上加一点变化。比如“TCP第四次挥手后主动关闭方进入什么状态”答案TIME_WAIT接着可能会问“为什么要TIME_WAIT”答案是确保最后一个ACK能被对方收到以及让旧连接的数据包在网络中过期消失。还有一个高频考点是HTTP状态码尤其是301和302、401和403的区别。301是永久重定向302是临时重定向401是未认证403是禁止访问。这几个如果弄混了在选择题里就是白给的一分。算法与数据结构的选择题很少让你手写代码但会考你对复杂度和算法思想的理解。排序算法这块快速排序平均时间复杂度O(n log n)、最坏O(n²)要记住堆排序适合求TopK归并排序是稳定排序而快排不稳定。二分查找的变体题也会出现比如“在旋转有序数组中查找目标值”选项里会给几个时间复杂度最优答案肯定是O(log n)。动态规划考的通常是最长公共子序列、背包问题这类经典模型的复杂度问你是O(n*m)还是O(n²)之类的。Linux命令也算一部分常考的文件权限、进程管理、端口查找。比如“查看某个端口被哪个进程占用”答案是lsof -i:8080或netstat -tunlp | grep 8080如果选项里有ss -lntp其实也可以。这里容易错的是有人会选“ps -ef | grep 8080”它只能查看进程信息不能直接查端口映射所以属于干扰选项。3. 从真题看答题策略与避坑指南3.1 多选题的“少选即零分”策略怎么破星环的多选题规则很明确少选、错选、多选都不得分。这意味着你不能用“排除法选一个最确定的”这样蒙混过关因为只要漏选一个正确答案整道题就没了。那怎么提高多选的正确率我自己的经验是先把“绝对正确”的选项找出来再把“绝对错误”的选项划掉剩下的如果拿不准宁可不当选。虽然不能部分得分但至少比选错导致整道题废掉要好。很多人喜欢用“这个说法好像在哪看过”来判断选项这在单选里也许能蒙对但在多选里基本就是送命题因为多选题的干扰项往往是根据真实概念“改一个字”构造出来的。比如把“HBase的RowKey设计要避免热点”改成“RowKey设计要尽量连续”单看好像也还行但“尽量连续”本身和“避免热点”是矛盾的连续意味着单调递增恰恰是产生热点的原因。还有一类多选是“以下哪些属于宽依赖操作”选项里会同时出现groupByKey、reduceByKey、map、filter、union。你如果只记得map和filter是窄依赖可能会犹豫union是不是宽依赖因为它的父分区可能来自多个RDD。但union其实每个父分区只对应一个子分区所以它属于窄依赖。这种题目需要你对算子的内部机制特别清楚而不能停留在“用过”的层面。一个比较实用的小技巧是遇到实在拿不准的多选先跳过等做完后面的题再回来。因为多选题通常集中在前面的大数据框架部分如果你的节奏被它打乱后面单选的简单分也容易丢。先把确定能拿的分抓在手里再回来死磕难题。3.2 时间分配不能在一道题上耗太久据我了解星环笔试的选择题量基本在30道以上限时一般不超过90分钟平均下来每道题只有两分多钟。听起来时间很充裕但实际做起来你会发现很多题光读题就要花半分钟再加上有些选项需要你画个图、推演一下比如Flink窗口重叠的计算、Kafka分区分配、HashMap的扩容条件这些都不是一眼能出答案的。我的建议是拿到试卷先快速扫一遍标记出那些一眼就能确定答案的基础题先把它们全部做完。这类题通常是Linux命令、网络状态码、数据结构复杂度、事务隔离级别等不需要复杂的推导做得快的话十分钟内可以搞定十几道能快速积累信心。对于中档题比如Spark宽窄依赖判断、线程池运行逻辑、HBase RowKey设计尽量控制在每题两分钟内。如果两分钟还没想明白先选一个你认为最可能的答案并标记一个记号等全部题目做完再回头重新推。对于那种计算量稍大的题比如Flink窗口重叠次数、Kafka分区分配宁可多花30秒也要把细节理清楚因为这种题只要想通了基本不会错而且分值通常不低。3.3 那些容易混的概念一定要反复对比记忆结合不止一届同学的反馈我发现有些概念在选择题里是反复出现的“陷阱点”。下面这张表是我自己整理的建议考前多看几遍对照着一一搞清楚。易混概念要点常见陷阱internal vs external table外部表删除仅删元数据数据保留把“删除外部表数据也被删除”当选项Map Side Join vs Reduce Side JoinMap端Join适合小表关联大表问“哪个适合大表Join大表”时选错RDD persist vs checkpointcheckpoint会截断血缘把两者混为一谈groupByKey vs reduceByKeyreduceByKey有本地聚合问“哪个能减少shuffle数据量”时选错HDFS写流程pipeline 写副本依次确认把“还是等所有副本写成功才返回”搞错进程 vs 线程进程是资源分配单位线程是调度单位把“并发执行”和“并行执行”搞混TCP挥手 TIME_WAIT主动关闭方连接关闭前停留2MSL问“谁进入TIME_WAIT”CAP分布式系统三者不可兼得非要选“三者都满足”的选项我遇到过一个很典型的情况题干问“Spark中reduceByKey和groupByKey哪个性能更好”选项给了四个描述有两个看起来都正确“reduceByKey有combiner”和“reduceByKey会减少shuffle数据量”。这两个说法本质上是一回事但选项里如果有一个是“两者性能完全一样”那显然选有combiner的那个如果选项问的是“为什么性能更好”那核心原因就是map端本地聚合减少了传输量。所以做题时一定要看清楚题干到底在问“是什么”还是“为什么”。3.4 项目经验也能反哺选择题这一条可能很多人没意识到但我觉得特别重要。你在准备简历项目的时候如果做过Spark或Flink相关的任务千万不要只停留在“跑通流程”。我面试过一些同学简历上写着“基于Flink实现实时用户行为分析”但问他“你的作业是怎么做Checkpoint的”“状态后端用的什么”他答不上来这种情况在笔试里尤其吃亏。笔试选择题里经常出现“你们项目里可能会遇到的问题”比如“Flink状态特别大导致频繁GC怎么办”答案大概是增大堆外内存、用RocksDB状态后端、调整Checkpoint间隔又比如“Kafka消费速度跟不上生产速度怎么办”合理的方向是增加分区和消费者数量、优化拉取参数、调整处理逻辑而不是一味加大消费者线程数因为分区数有限消费者线程超过分区数反而没意义。如果你真的自己跑过一遍这些流程碰到类似的选择题你不仅能选出正确答案还能顺手排除掉几个“看起来高级但实际不适用”的干扰项。这也是为什么我一直觉得笔试准备不能光刷题最好是把相关的组件在本地搭起来亲自用一段时间哪怕只是做一个小项目效果也比刷一百道题要好。4. 配套复习路线与推荐资源4.1 两个月冲刺复习的节奏如果你是准备明年秋招现在开始打磨基础完全来得及。我给你一个比较稳妥的节奏第一周先把Java基础和JVM过一遍。不要一上来就看大数据框架因为Spark、Flink的源码都是Java/Scala写的Java基础不牢后面看啥都像天书。重点看集合、并发、线程池、JVM内存模型和常用调优参数。第二到第三周系统过Hadoop和HDFS。这个阶段不需要看得特别深把HDFS读写流程、NameNode和DataNode职责、副本放置策略、MapReduce的shuffle过程搞清楚这是后面理解Spark的基础。第四到第五周主攻Spark和Flink。先把核心算子过一遍然后看运行原理重点看宽窄依赖、Stage划分、缓存、Checkpoint、窗口、Watermark。这段时间可以配合官方文档和入门书籍不要一上来就啃源码。第六周主攻Kafka和HBase。Kafka主要看生产者和消费者原理、分区分配策略、副本同步机制、消息不丢失的配置HBase看RowKey设计、Region架构、读写流程、WAL和刷写机制。第七周刷题和模拟。找一些大数据方向的选择题来练手重点是多选题的准确率。不需要做太多套但每套做完必须复盘把错题对应的知识点重新过一遍形成“刷题—总结—补漏”的闭环。第八周查漏补缺主攻自己的薄弱板块。是数据库原理弱还是网络基础弱有针对性地强化。如果时间紧张优先补大数据生态和Java并发因为这两块是星环笔试的核心。4.2 免费且高质量的学习资源整理我不推荐一上来就买几千块的培训班知识本身都是公开的你缺的只是整理和引导。官网文档Hadoop、Spark、Flink、Kafka、HBase这些组件的官方文档就是最好的复习材料。尤其是Flink的官方文档会把窗口、状态、Checkpoint讲得很细比大多数博客靠谱。《大数据技术原理与应用》厦门大学的入门教材适合快速建立Hadoop生态的整体认知。《Spark快速大数据分析》比较薄适合快速掌握Spark核心概念和算子。《深入理解Java虚拟机》JVM部分的选择题基本靠这本书。《Java并发编程实战》并发题拿高分的利器线程池、锁、并发容器全覆盖。《数据密集型应用系统设计》DDIA如果想在分布式理论、一致性、存储引擎上拿高分这本书是神书虽然内容多但啃完一遍选择题里的分布式理论基本不会丢分。4.3 考前一周做什么考前一周不建议再学新东西了重点放在“回忆”和“模拟”上。每天花一到两小时把之前整理的笔记和易混概念表过一遍尤其是第3.3节那些对比最好能做到不看表直接说出来。找三到五套模拟题严格按照考试时间来练提前适应节奏。这个阶段目标是提升多选题的手感和时间分配能力而不是追求刷题数量。如果有一些概念还是弄不懂我的建议是放下深度记住结论。比如Flink的Barrier对齐、HBase的Region分裂过程你不需要能手推每一步但必须知道“它是什么、为什么存在、解决什么问题”选择题考到这种程度就够了。5. 一些可能对你有用的碎碎念最后聊点个人感受吧。我在准备星环笔试的时候最大的困惑不是“不知道考什么”而是“不知道要复习到什么深度”。后来逼着自己把Hadoop生态从头到尾跑了一遍虽然花了很多时间但效果是实实在在的。选择题里那些“似曾相识”的选项如果你真的实操过一眼就能分辨出哪个是真实存在的机制哪个是瞎编的。还有一点笔试只是第一关别因为选择题翻车就否定自己。我认识一个朋友第一次笔试挂了第二年把基础补扎实后顺利通过现在干得挺好。校招这种考试有时候就是看你和公司在某个时间点的契合度没通过不代表你不行只是这次没匹配上。如果这篇东西能帮你少踩几个坑或者在某个深夜复习时给你一点方向感那我就很满足了。祝顺利有缘的话我们说不定能在星环的办公区打个照面。
返回列表