我从阿里面试回来,想和Java程序猿谈一谈

完整详解阿里Java P5-P8百万年薪架构师的技能要求! 疫情高峰期过去了,金九银十已经进入尾声了,最近很多同学给我留言:关于阿里的Java P系列薪资与技能的问题,本篇统一解答大家的疑惑。 先晒一个大家最关心的薪资结构,最新的薪资结构,个人建议翻倍参考。 薪资确实比较诱惑人啊,但问题的关键是: 自己的能力是否能匹配这个薪资呢? 对应岗位的技能要求是怎样的呢? 需要重点准备哪些面试技能? 好吧,下面我就逐一解读阿里Java 从P5到P8架构师的岗位与技能要求。 01 P5 Java高级工程师 1.岗位要求: 能独立完成日常工作,并能够对一些方案提出自己的建. 阅读详情

最近小编看了一篇关于面试的文章,题目是“我从阿里面试回来,想和Java程序员谈一谈”,内容不是讲面试前刷题,而是更加聚焦在面试前如何准备,以及工作当中如何学习。感觉总结的很不错,今天就推送出来,希望对大家以后面试有所帮助。

以下是面试经:


第一个问题:阿里面试都问什么?


很多人问我“去阿里面试都问了些什么”?,说实话,我只能隐约想起并发、JVM、分布式、TCP/IP协议这些个关键字,具体的问题真的是几乎都没记住。而且就算记住了,也告诉你了,你也背会了,但在面试中,你被问到一模一样问题的可能性依然很小。


甚至,就算你运气好被问到了,你也照着背下来了,也不一定就能对你的面试起到正面的作用,因为面试官万一多问一句,你可能就露馅了,那还不如干脆点说不会更好。


我当初参加的是阿里的社招面试,而社招不同于校招,问题的范围其实是很随机的。因为能参加一些比较知名的互联网公司社招的人,70%以上都会有个3-5年的经验。这倒不是说一两年经验的同学没有机会进这些公司,而是因为这种公司,大部分情况下只招一些比较资深的开发和应届生,而不招那些处于中间阶段的人。而1-2年经验的同学,往往就刚好处于这个尴尬的阶段。


对于能有3-5年经验的这部分人中,每个人的经历又都不同,所擅长的点也不一样,因此这就会导致每个人的问题和范围都不太一样。


很少说有哪个知名的互联网公司,比如BAT、京东、360、搜狐、网易等这些公司,其社招面试还有固定的问题和模式,让你可以像应届生面试一样,在面试前靠临时抱佛脚度过这一关。


大部分公司在社招的时候,不光是阿里,其它公司也都一样(因为我在一年多前也参加过很多其它知名互联网公司的面试,基本上都分为两个阶段的提问。


第一个阶段是主语言本身以及它的高级特性;

第二个阶段是讲述自己的项目,并在中间穿插着问题。

接下来我就针对这两个阶段,谈谈社招面试的准备,而不是去把阿里面试的过程背一遍。


1、主语言本身以及它的高级特性


对于Java来说,它的语言本身以及它的高级特性,都有哪些比较容易在面试中问到呢?


一般情况下,主要有以下知识点很容易被问到。(PS:以下所列举的,都是一些Java相对而言比较高级一点的知识点,因为这里谈的是社招,而不是校招)


1)Java的数据结构相关的类实现原理,比如LinkedList,ArrayList,HashMap,TreeMap这一类的。以下简单模拟一个数据结构的连环炮。


比如,面试官先问你HashMap是不是有序的?


你肯定回答说,不是有序的。那面试官就会继续问你,有没有有顺序的Map实现类?


你如果这个时候说不知道的话,那这个问题就到此结束了。如果你说有TreeMap和LinkedHashMap。


那么面试官接下来就可能会问你,TreeMap和LinkedHashMap是如何保证它的顺序的?


如果你回答不上来,那么到此为止。如果你依然回答上来了,那么面试官还会继续问你,你觉得它们两个哪个的有序实现比较好?


如果你依然可以回答的话,那么面试官会继续问你,你觉得还有没有比它更好或者更高效的实现方式?


如果你还能说出来的话,那么就你所说的实现方式肯定依然可以问你很多问题。


以上就是一个面试官一步一步提问的例子。所以,如果你了解的不多,千万不要敷衍,因为可能下一个问题你就暴露了,还不如直接说不会,把这个问题结束掉,赶紧切换到你熟悉的领域。


2)Java并发包当中的类,它们都有哪些作用,以及它们的实现原理,这些类就是java.concurrent包下面的。与上面一样,咱们也简单的模拟一个并发包的连环炮。


比如,面试官可能会先问你,如果想实现所有的线程一起等待某个事件的发生,当某个事件发生时,所有线程一起开始往下执行的话,有什么好的办法吗?


这个时候你可能会说可以用栅栏(Java的并发包中的CyclicBarrier),那么面试官就会继续问你,你知道它的实现原理吗?


如果你继续回答的话,面试官可能会继续问你,你还知道其它的实现方式吗?


如果你还能说出很多种实现方式的话,那么继续问你,你觉得这些方式里哪个方式更好?


如果你说出来某一个方式比较好的话,面试官依然可以继续问你,那如果让你来写的话,你觉得还有比它更好的实现方式吗?


如果你这个时候依然可以说出来你自己更好的实现方式,那么面试官肯定还会揪着这个继续问你。


为什么说面试的时候要引导面试官,原因就在这了。因为面试官的提问很多时候都是有迹可循的,你如果抓住了他的轨迹,能够猜到他下面很可能会问什么,那你在回答的时候就可以往你想要谈的方向去说。这样面试时就会显得更加从容,更加的游刃有余。


3)IO包和NIO包中的内容。这部分里面NIO会是重点,IO包大部分都会比较熟悉,因此可能会直接略过,直接问你NIO的内容。


IO包和NIO包的内容相对来说不是很多,首先NIO模型要熟悉,特别是其中的selector一定要非常清楚它的职责和实现原理。其实NIO的核心是IO线程池,一定要记住这个关键点。有的时候,面试官可能也会问你IO包的设计模式(装饰器模式),为什么要这样设计?


有的面试官还会问你有没有更好的设计,这个时候如果你不知道请果断说自己现在的水平有限,想不出来更好的设计,千万不要信口开河,随意YY。


4)Java的虚拟机的内容。这部分主要包括三部分,GC、类加载机制,以及内存。


一个GC部分简单的连环炮。


面试官可以先问你什么时候一个对象会被GC?


接着继续问你为什么要在这种时候对象才会被GC?


接着继续问你GC策略都有哪些分类?


你如果说出来了,继续问你这些策略分别都有什么优劣势?都适用于什么场景?


你继续说出来了以后,给你举个实际的场景,让你选择一个GC策略?


你如果选出来了,继续问你,为什么要选择这个策略?


下面是关于类加载机制的简单连环炮。


首先肯定是先问你Java的类加载器都有哪些?


回答了这些以后,可能会问你每个类加载器都加载哪些类?


说完以后,可能会问你这些类加载之间的父子关系是怎样的?


你在回答的时候可能会提到双亲委派模型,那么可以继续问你什么是双亲委派模型?


你解释完了以后,可能会继续问你,为什么Java的类加载器要使用双亲委派模型?


你回答完以后,可能会继续问你如何自定义自己的类加载器,自己的类加载器和Java自带的类加载器关系如何处理?


再来一个关于内存的连环炮。


首先肯定就是问你内存分为哪几部分,这些部分分别都存储哪些数据?


然后继续问你一个对象从创建到销毁都是怎么在这些部分里存活和转移的?


接着可能会问你,内存的哪些部分会参与GC的回收?


完事以后,可能还会问你Java的内存模型是怎么设计的?


你回答了以后,还会继续问你为什么要这么设计?


问完以后,还可能会让你结合内存模型的设计谈谈volatile关键字的作用?


你在谈的时候,肯定会提到可见性,那么接着可见性这三个字,还可以继续问你并发的内容。


基本上Java语言本身以及语言稍微高级点的内容就是以上部分,如果你能把以上四部分了解的非常透彻,那基本上Java这部分就没啥问题了,因为光以上的内容就够你跟面试官聊很久了。你聊这些聊得久了,自然问你其它问题的时间就会短点。


你从以上这些问题的过程也应该能感受出来,很多时候,面试官都是顺着一条线一路问下去的,如果你觉得这条线你不熟悉的话,就要及时拐弯,引导面试官去问其它方面的问题。千万不要一直往下深入,直到自己跳不出来为止,那就尴了个尬了。


2、讲述自己的项目,并在中间穿插着问题


这一部分是面试过程中必问,也是聊得最久的一个阶段。除非你前面的语言部分非常扎实,扎实到面试官问了一两个小时,依旧没有探出你对语言本身的了解到底有多深。否则的话,你一定逃不过自己的项目这一关,而且一般情况下聊得时间不会太短。


这一部分内容,一般的模式就是你自己去讲你做过的项目,然后面试官会冷不丁的让你去解释其中某一部分,比如让你解释当时为什么要这么做,或者问你现在觉得有没有更好的办法。而这些穿插的问题,大部分与你的项目所用到的技术有关。而你需要做的,就是充分、再充分的去总结自己做过的项目(尤其是最近的一两个项目),挖掘出一个甚至N个亮点,以备于到时候可以让面试官产生眼前一亮的感觉。如果你能达到这种效果的话,基本上离你成功就不远了。


3、额外的加分项


上面两个阶段基本上是必问的,还有一些加分项。这些加分项中,有些内容面试官也会问你(比如TCP/IP协议、算法),但更多的是会先问你了解不了解,你了解的话再继续聊,不了解的话就直接略过了,不至于因为这种问题而直接把你打入地狱。


下面列举一下这些加分项,如果可以的话,这些加分项还是要争取一下的。


1、计算机系统原理。


2、网络通信协议(TCP/IP,HTTP等)。


3、数据结构与算法。


4、著名开源项目的源码。


5、你自己有很棒的开源项目。


6、你的个人博客。


7、待评论区补充。


这几项当中,对于前1-3项,如果你之前就比较了解,只是由于时间问题忘记了的话,还是可以临时抱佛脚一下的。至于后面4-6项,就需要你日常的积累了,不是一时半会儿能做到的。如果你平日里没有积累,那么后面这三个加分项只能抛弃了。


4、与你职位相关的内容


其实这最后一项是对前面三项的补充,你应该尽量去主攻和你面试的职位相关的内容。比如你面试一个实时计算的职位,那么你的算法最好要厉害,对于著名的实时计算开源项目要熟悉,最好阅读过源码,而且还要对分布式系统有一定的见解。


因此,这个第4部分没有具体的内容,只是提醒你,如果你很明确自己的面试职位,最好在面试前准备的时候,尽量朝职位的需求方向靠拢,这样成功的可能性更大。


(完)

回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议 社招面试如何准备以及JAVA各阶段如何学习。 阅读详情

相关推荐

保姆级教程:用ArcGIS Pro搞定云南30米分辨率DEM地形图(附数据下载与配色方案)

本文提供了一份详细的ArcGIS Pro教程,指导用户如何制作云南30米分辨率DEM地形图。从数据下载、预处理到镶嵌与质量控制,再到地形分析与可视化,全流程覆盖云南复杂地形的处理要点。特别包含数据下载链接、配色方案及常见问题解决方案,适合地理信息分析新手和专业人士。

weixin_30467199的博客 309

阿里架构师耗时1年,把P8所需要的整个Java体系,都整理到了一起

年终将至,也该给自己一个交代了。可惜的是我的时间又一次不够用了,当回到公司后一直忙于工作与家庭之间,更新的速度如蜗牛一般,尤其很多知识我也是需要经过严格的查证才敢整理出来(细节最要命);JVM深度剖析(数据区+堆外内存解读+JDK+内存泄漏问题排查+Arthas+GC算法和垃圾回收器+类加载机制+指针算法+TPS系统等)Java基础复盘(面向对象+JDK+集合+泛型+IO操作+异常分类及处理+反射+注解+内部类+泛型+序列化)MySQL深度进阶(事务隔离级别+分库分表+优化流程+索引+MVCC+处理流程)

m0_63437643的博客 269

Halcon实战:5分钟搞定自定义直线卡尺工具(附完整代码下载)

本文详细介绍了如何使用Halcon快速开发自定义直线卡尺工具,通过交互式ROI绘制、边缘检测和直线拟合三个核心函数,实现高效工业视觉检测。文章包含完整代码下载,帮助开发者在5分钟内掌握这一实用工具的开发技巧,提升直线检测的精度和效率。

perl8的博客 252

阿里P8大牛从零开始教Java开源框架,spring并发+JVM调优把我直接问懵了

分享一些资料给大家,我觉得这些都是很有用的东西,大家也可以跟着来学习,查漏补缺。《Java高级面试》《Java高级架构知识》《算法知识》《Java高级架构知识》[外链图片转存中…(img-33OgU9U0-1710878819990)]《算法知识》[外链图片转存中…(img-Z8NZstrk-1710878819990)]点击传送门,即可免费领取!

2401_83703797的博客 696

【Anaconda】解决“libGL error: MESA-LOADER: failed to open iris”问题

stackoverflow中的“libGL error: MESA-LOADER: failed to open iris”问题。而在自己创建的conda环境中的lib下出现`GLIBCXX_3.4.30’ not found 的情况。在上述解决方案中,将第一行命令的lib路径换成自己创建的conda环境lib路径,运行指令,问题解决。目前问题解决,总结一下查找资料以及解决方法。运行如下命令,发现本地支持。

quintus0505的博客 5026

【STM32】CubeMx系列教程之移植FreeRTOS

本文详细介绍了在STM32F429上通过CubeMX工具移植FreeRTOS的方法。主要内容包括:1)配置系统时钟源,将TIM1替换SysTick作为时钟基准;2)FreeRTOS的创建与配置,包括任务创建、堆栈大小设置等;3)关键配置参数说明,如堆大小建议设为RAM的50%-70%;4)常用函数如堆栈监控、任务挂起/恢复等。文章提供了从基础配置到深入优化的完整移植指南,适合STM32开发者参考使用。

JackieJin123的博客 788

阿里P8架构分享:一线Java程序员该如何迈过“中年危机”这个坎

中年危机是真实存在的,即便有技术傍身,在一些特定阶段及环境下,还是难免对未来产生质疑与焦虑。很长一段时间,我都在想,这些年程序员收入确实不错,程序员因此一度被特别关注,其实深入思考你会发现,我们也只是运气还行,恰好赶上历史机遇了而已,说直白点,这是智能手机和移动互联网带来的行业爆发式增长的结果。只有你会得越多,竞争力才越强,再者,任何一家公司都不会放弃一个能跟上公司发展脚步的资深员工。大家细想一下,这一波被中年危机淘汰的程序员,是不是大部分在年轻时甘之若怡做颗螺丝钉,选择生活安逸、不追求技术进步的人?

the shy 1066

高通8397/8797 qcx camera usecase梳理

本文介绍了ISP(图像信号处理器)的两种工作模式:Inline模式和Offline模式。Inline模式下,前端(IFE)直接连接物理层并行处理,最多支持4路流处理,后端(IPE)通过内存访问完成增强处理;Offline模式下,图像数据先写入内存再由SFE_Lite读取发送给IFE_Full处理,实现一个IFE串行处理多路数据。文章还详细解析了camera_config和usecase配置文件的结构与作用,包括硬件资源配置、场景逻辑定义等,并以ID40_UsecaseDMS为例说明离线模式的具体实现流程,包

车载行业 858

阿里大佬倾情力荐:Java全线成长宝典,从P5到P8一应俱全

深入Tomcat底层:理解Tomcat启动流程+Tomcat配置详解+HTTP请求解析与处理流程+Tomcat核心组件认识+Tomcat类加载机制及源码解析+Tomcat中异步Servlet实现源码分析+Tomcat BIO实现源码解读+Tomcat NIO实现源码解读+Tomcat集群与会话复制方案+Tomcat性能调优+JVM参数优化+Tomcat集群+Tomcat安全。因此,不断更新自己的知识库,确保自己一定能保持在这个行业的头部,要具有忧患意识是非常重要的。

代码界的扛把子 968

水声信号处理开源算法库最新进展

欢迎关注本专栏,一起探索新世界大家好,我是ZhuChunSHU。985院校硕士毕业,现担任算法研究员一职,热衷于深度学习算法研究与应用。曾获得阿里云天池比赛第三名,CCE比赛第五名,科大讯飞Q比赛第六名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法行业就业。希望和大家一起成长进步。今天继续我们的专栏分享!!!!!!!!!!!!!!!!!!!!水声信号处理是海洋科学与工程领域的核心组成部分,对于水下通信、目标探测、海洋环境监测以及生物声学研究至关重要。

u012133341的博客 1254

一条 POST 创建整棵业务对象树,SAP Gateway Deep Create 的运行机制与 ABAP 实现

SAPUI5 的 OData V2 Model 支持 Deep Create,可以为一个新建的 transient parent context 创建 Navigation Property 下的 subentity,并把这些子实体的数据合并进 Root Entity 对应的 OData 请求 Payload。销售组织是否合法,客户是否允许下单,物料是否存在,销售区域是否匹配,计量单位是否正确,项目类别如何确定,定价是否成功,合作伙伴如何派生,交货工厂如何确定,这些都可能在一次创建过程中被触发。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 148

为什么从java转运营面试问_我从阿里面试回来,想和Java程序猿谈一谈

对于Java来说,它的语言本身以及它的高级特性,都有哪些比较容易在面试中问到呢?一般情况下,主要有以下知识点很容易被问到。(PS:以下所列举的,都是一些Java相对而言比较高级一点的知识点,因为这里谈的是社招,而不是校招)1)Java的数据结构相关的类实现原理,比如LinkedList,ArrayList,HashMap,TreeMap这一类的。以下简单模拟一个数据结构的连环炮。比如,面试官先问你...

weixin_30070647的博客 660

如何完全卸载axure软件以及解决安装axure后打不开的问题【2023年】

如何完全卸载axure软件以及解决安装axure后打不开的问题【2023年】

念兮为美 5141

阿里面试回来,想和Java程序员谈一谈

引言        其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来。LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的。        但是,最近问LZ的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回复了。        其实

谙忆-陈浩翔 5323

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: BufferedInputStream的read方法原理
下一篇: 得到java异常printStackTrace的详细信息
ole_triangle_java
博客等级 码龄10年 82粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值