Java面试"整活"自己会一点大数据被疯狂diss

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 阿粉不知道大家面试的时候,有没有被面试官问到,我看你简历上写了了解一点某某某,你说一下这块的内容吧?当我们听到这段话的时候,是不是感觉非常的熟悉,对,就是这么熟悉,因为有很多面试官看你是 Java 开发的时候,问过了 Java 相关的知识,既然看到了你自己敢在自己的简历上面写了解一点其他的技术的时候,都会很 “热心” 的问候一波,而阿粉的朋友,就被简历上写的了解大数据的相关内容被疯狂 diss 了一波,阿粉顺便也给大家说说面试都问了些啥?

Java面试问了这些

1.基础知识之 ArrayList 和 LinkedList 使用性能对比。

48.jpg

实际上这个问题就是非常基础的,实际上面试官就是想问你,二者的数据结构是什么样子的,以及他们各自适用于什么样子的场景上。

阿粉的回答就是从这开始入手,然后开始回答面试官的问题。

ArrayList和LinkedList都是实现了Collection和List接口。

ArrayList 底层实际上是大小可变数组的实现,并允许包括 null 在内的所有元素,还提供一些方法来操作内部用来存储列表的数组的大小。

LinkedList 底层就是链表的结构实现,并且允许所有元素(包括 null)LinkedList 类还为在列表的开头及结尾get、remove 和insert 元素提供了统一的命名方法。

这个时候我们就能从数组和链表的不同来分析性能的比较了,毕竟这都是老生常谈,数组结构查询速度快,添加和删除操作慢,而相对的链表结构,查询速度相对来说比较慢,而添加和删除操作比较快。

一般这个答案都是面试官需要的,也有面试官会问你,为什么查询数组就快,链表就慢,这个就涉及到底层的知识了,如果不会,那么肯定只能说,自己写过测试用例,实际对比的,这确实没错,但是肯定不是面试官想要的答案,面试官想要的答案都是:

针对查询操作来说,在数组中,只需对 [基地址+元素大小*k] 就能找到第k个元素的地址,对其取地址就能获得该元素,
而链表要获得第k个元素,首先要在其第k-1个元素寻找到其next指针偏移,再将next指针作为地址获得值,
这样就要从第一个元素找起,多了多步寻址操作,寻址操作次数链表要多一些。

如果你能回答出类似这种方式的答案,一般面试官就放过你了,阿粉面试的时候,十次有九次都是这种,说到这里之后,这个问题就简单的结束了,面试官也就不再进行深挖了。

2.JVM的垃圾回收机制

这么说比较笼统。能够细致问出来的问题就是那些,OOM可能发生在哪些区域上?堆内存结构是怎么样的?Minor Gc和Full GC 有什么不同?

一般出来的问题都是根据这几种的来回变换的,万变不离其宗,阿粉遇到的面试问这个的,大部分都是问的 Minor Gc和Full GC 有什么不同?

Minor Gc和Full GC 有什么不同

Minor GC :发生新生代的的垃圾收集动作,Minor GC非常频繁,回收速度一般也比较快

Full GC :发生在老年代的GC,出现了Major GC经常会伴随至少一次的Minor GC(并非绝对),Major GC的速度一般会比Minor GC的慢10倍以上

然后我们就开始我们对垃圾回收机制的表演就行了,这个要是拆开了说,那可就太多了,如果大家有想深入了解的,阿粉已经准备好了 面试大全PDF 送给大家,大家在后台回复 java极客技术PDF 就可以获取到由阿粉精心为大家准备的内容。

3.你们项目中 Redis 是怎么用的。

49.jpg

如果面试官问出了这块的内容,实际上就是考察 Redis 的一些特性了,比如你们使用 Redis 实现分布式锁,那么实现分布式锁的必要性在哪里。

还有如果你们使用了 Redis 做分布式数据缓存,那么必然导致 Redis 和数据库双写一致性问题,这些问题如果你开始回答了,那就就会掉进一些坑里面,比如说Redis 和数据库双写一致性问题,这玩意阿粉之前面试的时候被问到过,最终的解决方案也就是保证了最终一致性,如果对数据有强一致性要求,不能放缓存。我们所做的一切,只能保证最终一致性。就这么简单。

面试官大致就问了一些这么基础的内容,剩下的都是项目中的了,阿粉就不再给大家赘述了,但是接下来,阿粉就开始被面试官疯狂 diss 了,阿粉在自己的简历上面,写了一句话,了解大数据的相关知识。比如 Hadoop , MapReduce,这些东西,面试官有点感兴趣,就开始了无情的追问。

关于大数据的面试悲剧

面试官:我看你简历上写了了解大数据的相关内容是么?

阿粉朋友:是呀,因为做了好几年的开发了,总想着也学习一下这块的内容啥的。

面试官:那你说说你了解的这些内容吧。

阿粉朋友:了解的哪些内容?

面试官:就你在简历上写的这几个,Hadoop,MapReduce,还有就HDFS。

这时候阿粉朋友心中一万个 ZZ 飘过,这东西咋说,说自己安装?搭建?还是啥,但是这时候也不能慌呀,毕竟也算是自己学习过一点的,虽然没有正式在项目中使用过,于是阿粉朋友就开始说:

Hadoop项目结构实际上由很多个组成部分,像我在简历中写的,HDFS 分布式文件系统,MapReduce 分布式并行编程模型,YARN 资源管理和调度器,Hive 数据仓库,还有就是 HBase 非关系型数据库,

HDFS三个核心组件是 NameNode,DataNode,SecondaryNameNode,比如说 NameNode 是集群的核心, 是整个文件系统的管理节点也是维护者,DataNode 存放具体数据块的节点, 主要负责数据的读写, 定期向 NameNode 发送心跳,而 SecondaryNameNode 算是辅助节点, 同步NameNode中的元数据信息。

然后面试官就开始打断我了,就对阿粉说,这块内容在实际的工作中,你用过么?阿粉朋友的回答的也确实是没有用过这块,自己只是在工作之余,利用业余的时间去学习了一下有关这方面的内容,扩充一下自己的知识面,接下来面试官就好像盯着阿粉不是很了解这块的内容就开始了无情的发问。

1.NameNode 的工作机制你了解么?

阿粉朋友回答:主要分为了2个阶段,第一阶段是 NameNode 启动,第二阶段是 Secondary NameNode 工作,然后简单细说了一下,于是面试官给阿粉的朋友纠正了一些不合适的地方。

2.正常工作的hadoop集群中hadoop都需要启动哪些进程

这阿粉的朋友因为没有在工作中使用过,于是说了不知道,面试官就开始说起了这块的内容,

最后在面试结束的时候,就说了一句,这就是你自学的这块的内容?当阿粉听到面试官有说这句话的时候,是不是就是有点过分的含义,毕竟人家只是自学的,也没有实际的开发经验,就算学的不怎么样,也没必要这么过分不是么?

也可能是面试官确实会这块的内容,但是阿粉听到这里实际上就已经开始听不下去了,毕竟你是面试官,你的主要内容是不是应该面试,毕竟人家面试的是 Java 开发,也不算是大数据工程师,你直接给“整活”,是不是有点不太好。

于是阿粉也劝了自己的这个朋友,尽管这个面试可能面试不上,但是不要放弃,毕竟大部分的面试官对这个东西还是不看重的,毕竟你只是说了自己在开发的过程中自己学习的,只是了解,也不是专门做大数据的,即使你回答的不好,也不能打击到你的自信心,影响你接下来的面试不是吗?

马上金九银十面试季就要来到了,又到了一个跳槽的好月份,大家都准备好了么?如果没有准备好,那么就赶紧回复 java极客技术PDF 获取最新的面试题,找个高薪的工作吧。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
15天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
45 2
|
4天前
|
Java 程序员
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。
28 14
|
20天前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
26天前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
22天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
44 4
|
23天前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
76 4
|
28天前
|
分布式计算 Java MaxCompute
ODPS MR节点跑graph连通分量计算代码报错java heap space如何解决
任务启动命令:jar -resources odps-graph-connect-family-2.0-SNAPSHOT.jar -classpath ./odps-graph-connect-family-2.0-SNAPSHOT.jar ConnectFamily 若是设置参数该如何设置
|
2月前
|
存储 Java
[Java]面试官:你对异常处理了解多少,例如,finally中可以有return吗?
本文介绍了Java中`try...catch...finally`语句的使用细节及返回值问题,并探讨了JDK1.7引入的`try...with...resources`新特性,强调了异常处理机制及资源自动关闭的优势。
23 1
|
1月前
|
算法 Java
JAVA 二叉树面试题
JAVA 二叉树面试题
17 0
|
16天前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
128 7