前言
大概早上9点左右,收到了阿里面试官小姐姐的电话,声音很好听...跟她约了晚上9点的电话面..然后一整天上班不在状态,开始各种回顾之前准备的知识.为了这次面试大概准备了半个月,利用每天下班到家8点到凌晨1点30的时间,疯狂的补充自己的技术栈。fei话不多说,直接进入正题!以下就是我曾在阿里面试的一些列操作,完完整整的分享给大家!同时也希望对大家能有所帮助!
一面:70分钟
突击电话面试 正思考着项目功能模块,阿里面试官打来了电话,开始了阿里一面。 阿里面试官自我介绍,介绍了5分钟左右,部门的情况,主要的业务
一、提问开始
1、会哪些操作系统? 我的回答:Linux会一点 3、说一下操作指令,怎么看cpu,看进程,看端口 4、操作系统进程间通信 5、追问了一个信号相关的问题,我不知道了。 6、io多路复用,说一说 7、面向切面编程,说一说那些场景 8、说说面向切面编程 9、给一个场景,有很多方法,找出耗时长的方法 10、spring的@autowired的作用 11、mybatis和hibernate的区别 12、C,C++了解吗 我的回答:(不了解) 13、python用过吗 我的回答:(没有,我用过matlab(笑)) 14、Java类加载器哪几种 15、Java垃圾回收器 我的回答:先说了垃圾回收算法–垃圾收集器–比较CMS和G1。 16、配置过java启动设置吗 我的回答:没有,我只用过-xms等指令改过JVM参数,和jinfo看参数 17、说说-XMS,除了-XMS,你还用过哪些指令 我的回答:-XMX -XSS -XMN 18、说说java保证线程间同步的方法 我的回答:Synchronize,reentrantlock,volatile,原子类。。。 19、说说倒计时器和循环栅栏的区别 20、说一说为什么要有JIT 21、mysql聚簇索引和非聚簇索引 22、左外连接和内连接的区别 23、数据库的读写分离的作用 24、hash和一致性hash的区别,为什么要用一致性hashspring boot 25、消息中间件了解吗,说说为什么要用消息中间件 26、项目中的缓存不一致怎么解决的
二面:50分钟(P9面)
早上面试官发来短信,约了晚上面试,让我准备一段最能体现我水平的代码。 纠结了一天,最后还是硬着头皮,准备展示自己的项目代码。
首先自我介绍
1、 面试官用共享屏幕看了我的项目,项目太过简单。 我的回答:感觉面试官一下没了兴趣。 2、 之后面试官说我简历上写读过SSM框架源码,让我说一说SSM框架的源码 我的回答:我愣了一下,我说简历上好像没有写吧,SSM框架源码我没读过。 3、 问我读过哪些源码 我的回答:我当时有点懵,第一反应,ha…ha…hashmap 4、面试官又问,除了hashmap你还读过哪些源码。 我的回答:想了想,ConCurrentHashMap, ArrayBlockingQueue。。。 5、那就ConCurrentHashMap吧。你给我讲一讲。 我的回答:理了下思路,准备开始讲了,面试官让我在IDE上把源码打开讲。
当时差点ConCurrentHashMap都没拼出来。(一紧张,以为是Cur开头的。。。)之后就一直说Concurrenthashmap源码,面试官主要关注点在怎么是线程安全的。插入怎么保证安全,读写间会不会影响,怎么保证安全。。。因为之前项目和SSM框架的源码,我都没能很好的展示。所以concurrenthashmap就尽可能的多说,把自己好的一面展示给面试官。 说了大概40分钟吧,然后面试官说时间差不多了,先这样吧。
反问。
面试官让我多参加开源的项目。
面完一度觉得自己凉了,没有高水平的代码展示,也没读过spring的源码。我的朋友也觉得这次希望不大。之后问了一面的面试官面试结果,没想到过了。
[图片上传失败...(image-f378b8-1623757660318)]
三面:25分钟(P9交叉面)
面试官介绍 面试官介绍自己是中间件部门的,这轮是交叉面。 感觉面试官很和蔼,很有耐心。更多的是让我自己去讲述所学的知识。
自我介绍 项目介绍 说说自己会那些知识 我从头开始说,(集合类,JVM,JUC,Mysql,SSM。。。) 1、 集合类用了那些设计模式 2、 Juc 说说怎么理解线程安全之后面试官一直在追问线程安全问题,问我JVM堆上会不会产生线程安全问题。(大概是这个意思)我这方面确实不太了解。就说了创建对象时候的线程竞争问题。后来面试官说了,他其实更想我能从底层去说,如果能从底层CPU开始说,那他会非常认可。
反问
1、面试官很真诚的给了一些学习建议。 2、他让我加强学习的广度和深度。 3、先加强广度,多学一些技术知识。(确实我目前的会的技术还很少) 4、因为学习精力有限,再挑一些方面去加强深度。(我也没能做到在一些方面深入学习)
阿里面试通过要点
重点一:基础知识的复习
1.、 java基础知识 2、 Jvm的底层原理 3、计算机网络 4、操作系统 5、 数据结构和基础算法 6、 数据库知识理论 过程心得:这段时间很痛苦,很多基础知识需要复习掌握,知识点很细,让同学难以掌握。但这些知识在大厂面试中占比(80%左右),能不能过一面也正是这些基础知识理论。而在这过程中,难点主要是,java,并发知识,jvm原理,http,tcp协议,网络协议架构和它各个层的功能,操作系统的基础理论。 重点二:常用的技术框架 Spring
SpringMVC
SpringBoot
Mybatis
Dubbo
Rocketmq
过程心得:这些技术基本都是各个公司使用频率相当高的,对于面试时,一定要掌握这些基础框架的使用,并能对这些框架技术有一定的了解,如果能够对这些框架技术有很深的理解并进行一些改进那就更好了。
重点三:数据结构基础算法
基础算法
树知识(平衡树,b树,b+树,红黑树)
过程心得:面试经常问,多以算法题的形式出现,所以在准备面试的过程中,多去leetcode上刷刷题。
重点四:心态
过程心得:马老师说过,“今天很残酷,明天更残酷,后天很美好,但大多数的人死在了明天。”这段过程心态一定要平衡,让自己放松,这样才能全神贯注的去复习各个知识点。坚持几个月,你会发现自己的成长。
HR面:20分钟(视频面)
没有自我介绍,直接开始问问题。 hr给我感觉还是比较亲切的。 大概问题:
1 、非科班的你对比科班的学生,满分5分,给自己水平打几分(3分),怎样提高剩下的两分。 2 、自己的强项和优势(自律,努力,对学习有热情) 3、 在阿里每个人都很勤奋,这一点不算什么优势。(做事专注度高,精力旺盛) 4、 最喜欢哪一类的人。 5、 家庭带来的一个影响(可以说好的,也可以是不好的) 6、 遇到的心里落差最大的事情(挫败感最强的事情) 7、 压力大能承受吗。 8、hr也很真诚,其实交流过程中,也能引发自己的一些思考。自己的优势,自己的性格,自己的抗压能力,到底是怎样的。
结论
这次应该是都面完了,面试官说要我接下来保存手机畅通,有消息了HR会联系。特别感谢一面的面试官捞了我,给了我机会,同时也认可我的努力和态度。对比我的面经和其他大佬的面经,自己真的是运气好。别人8成实力,我可能8成运气。所以对我而言,我要继续加倍努力,弥补自己技术上的不足,以及与科班大佬们基础上的差距。希望自己能继续保持学习的热情,继续努力走下去。也祝愿各位同学,都能找到自己心动的offer。
个人经验
最近针对互联网公司面试问到的知识点,总结出了Java程序员面试涉及到的绝大部分面试题及答案分享给大家,希望能帮助到你面试前的复习且找到一个好的工作,也节省你在网上搜索资料的时间来学习。
内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、SpringBoot、SpringCloud、RabbitMQ、Kafka、Linux等技术栈。
👇🏻 添加 博主 获取最新面试题资料👇🏻