面试阿里JavaP7岗本以为凉凉:4轮技术面终拿下offer,终圆我大厂梦

    技术2024-10-27  24

    一直有个大厂的心,复工回来,就开始看大厂机会,有幸接到了阿里的面试,非常荣幸,很快就拿到了Offer,一个字就是"爽" 经历了三轮技术面和一轮Hr面,面试官们都非常nice,为了帮助更多人想进阿里巴巴的同学完成梦想,特地整理了面试的问题,给大家一些建议,希望大家也能拿到自己心仪的Offer

    阿里一面:

    1.介绍一下自己。 2.项目参与的核心设计有哪些 3.java反射原理, 注解原理? 4.ArrayList和LinkedList的插入和访问的时间复杂度? 5.说说一致性 Hash 原理 6.HashMap及线程安全的ConcurrentHashMap,以及各自优劣势 7.https和http区别,有没有用过其他安全传输手段? 8.SQL优化,常用的索引? 9.请详细描述springmvc处理请求全流程? 10.项目用 Spring 比较多,有没有了解 Spring 的原理?AOP 和 IOC 的原理 11.1.8还采用了红黑树,讲讲红黑树的特性,为什么人家一定要用红黑树而不是AVL、B树之类的? 12.线程池的工作原理,几个重要参数,然后给了具体几个参数分析线程池会怎么做,最后13.问阻塞队列的作用是什么? 14.Synchronized和Lock哪个更好? 15.ArrayList和LinkedList底层

    阿里二面:

    1.先直接问做过哪些Java开发相关的项目。 2.数据库索引,底层是怎样实现的,为什么要用B树索引? 3.Mysql主从同步的实现原理? 4.两个10G的文件,里面是一些url,内存只有1G,如何将这两个文件合并,找到相同的url? 5.代码题:两个有序数组,数组中存在重复数字,合并成一个有序数组,去除重复数字。 6.有使用过哪些NoSQL数据库?MongoDB和Redis适用哪些场景? 7.描述分布式事务之TCC服务设计? 8.Redis 的 list zset 的底层实现 9.分布式 session 的共享方案有哪些,有什么优劣势 10.从千万的数据到亿级的数据,会面临哪些技术挑战?你的技术解决思路? 11.排序算法的复杂度,快速排序非递归实现。

    阿里三面:

    1.jvm性能调优都做了什么 2.分布式系统原理:CAP,最终一致性,幂等操作等 3.高并发情况下,我们系统是如何支撑大量的请求的 4.什么情况会出现雪崩,以及如何应对? 5.集群监控的时候,重点需要关注哪些技术指标?这些指标如何优化? 6.分布式架构设计哪方面比较熟悉 7.介绍你实践的性能优化案例,以及你的优化思路 8.谈谈分布式锁、以及分布式全局唯一ID的实现比较?

    阿里四面

    1.自己参与的项目,技术难度高的有哪些? 2.谈一个你觉得你学到最多的项目,使用了什么技术,挑战在哪里 3.线上有实际的性能优化经验? 4.从SQL、JVM、架构、数据库四个方面讲讲优化思路,以及如何优先排序? 5.redis的持久化方式,redis3.0原生集群和redis读写分离+哨兵机制区别 6.Redis 的 list zset 的底层实现 7.如果让你实现一个mq,怎么样保证消息不丢失 8.你熟悉哪些中间件,谈谈你对他们的理解,以及对应的使用场景区别? 9.最后,你有什么想问我的?

    HR面

    自我介绍 如何学习新技术? 如何团队合作的? 职业规划

    由于文章的篇幅有限,所以这次的阿里面试题答案整理在了PDF文档里

    我总结了下,问的都不算很难,虽然不是很顺畅,但问题也都一一回答上了,但是总感觉有种说不出的感觉。本以为已经凉凉了,谁知道几天后竟然收到通知,竟然过了!心情也是有点无法平静

    当然,大厂的面试,是一个系统规范化的流程,除了Spring、Redis、MQ这些必备品外,每一个简历都会有一句你Java基础扎实(有没有被说中),那么,到底怎么样算Java基础扎实?

    1、集合,例如 List、Map的原理,HashMap基本必问这个不用我多说

    2、并发,例如线程、线程池,锁相关,这些也基本必问

    3、JVM,例如垃圾回收器,垃圾回收算法,OOM处理,jvm参数及调优

    那么专业技能怎么写?

    先问一下你自己会什么,然后看看你意向的公司需要什么。我说的是一般HR可能并不太懂技术,(当然内部人员来面试就不一样了)所以他在筛简历的时候可能就盯着你专业技能的关键词来看。对于公司有要求而你不会的技能,你可以提前花几天时间学习一下,然后在简历上可以写上自己了解这个技能。比如你可以这样写(下面这部分内容摘自我的简历,大家可以根据自己的情况做一些修改和完善):

    1.计算机网络、数据结构、算法、操作系统等课内基础知识:掌握 2.Java 基础知识:掌握 3.JVM 虚拟机(Java内存区域、虚拟机垃圾算法、虚拟垃圾收集器、JVM内存管理):掌握 4.高并发、高可用、高性能系统开发:掌握 5.Struts2、Spring、Hibernate、Ajax、Mybatis、Redis、JQuery :掌握 6.SSH 整合、SSM 整合、 SOA 架构:掌握 7.Dubbo: 掌握 8.Zookeeper: 掌握 9.常见消息队列: 掌握 10.Linux:掌握 11.MySQL常见优化手段:掌握 12.Spring Boot +Spring Cloud +Docker:了解 13.Hadoop 生态相关技术中的 HDFS、Storm、MapReduce、Hive、Hbase :了解 14.Python 基础、一些常见第三方库比如OpenCV、wxpy、wordcloud、matplotlib:熟悉

    上面说的这些,是面试基本的标配了。

    首先来说下对于简历的准备。MQ、Redis这两个是标配没跑的了。为啥?你要突出你的核心竞争力,无非围绕高并发、高可用、海量数据这几个点出发。

    其次,核心竞争力也体现在分布式解决方案的真实落地实践,但是这些分布式解决方案,也很大程度上依赖 Redis和 MQ。

    以下主要分享面经和个人学习方法,会包括很多PDF文档,如面试题库(含答案+解析)、学习笔记、实战文档和脑图等等,个人可以免费分享,私信关键字(资料)免费获取~

    整理了一套 2020 最新的 Java 面试题,基本上覆盖了所有的面试知识点,包括的内容如下: Java基础,容器,多线程,反射,Java web模块,网络,设计模式,SpringMVC,SpringBoot,SpringCloud,Hibernate,Mybatis,中间件(RabbitMQ,Kafaka,Zookeeper),数据库(MySQL,Redis)和JVM等相关内容。

    如果大家看的还不过瘾,再来份美团架构师总结的面试知识点,看完两份BAT so easy!

    以上分享面经和个人学习方法,包括很多PDF文档,如面试题库(含答案+解析)、学习笔记、实战文档和脑图等等,个人可以免费分享,私信关键字(资料)免费获取~

    Processed: 0.011, SQL: 9