赞
踩
全中国的IT公司只想去阿里,因为阿里真的是中国程序员的朝圣地,进去真的能学很多。最终经历了5轮面试,顺利拿到了offer。这里和大家分享一下我的面试经验。
一面过程
首先是一次不记名面试,这里我也真的很感谢这场不记名面试了,如果没有这场不记名面试,我可能真的一面就结束了。因为我之前是没有任何找工作的面试经验的,再加上去阿里对我来说真的是一件几个月做梦都会梦到的事情,我把它看的太重了,所以在面试之前我经历人生中最紧张最紧张的一段时间,导致这次面试基本是全面GG。我先来说一下这次面试的过程吧。
面试我的是一位小姐姐(这是我之前没想到的,因为我觉得肯定是个男生),我先是自我介绍,然后我感觉我介绍的很着急,而且没有逻辑性(充分暴露了我的准备不足),介绍完就感觉很不好,此时已经感觉有点凉了。
然后就问了第一个问题:springcloud的三个原则是什么?
我不知道啊,springcloud我才学了一天啊,只会用啊,所以第一个问题就GG了,我更紧张了。之后小姐姐问我,你对哪块有比较深入的研究,我因为之前对redis看了不少,所以我就说redis还仔细研究过一点,然后就又问了一个问题,那个问题中关于redis的名词我都没听过,这个时候我已经完全慌了,两个问题都没答出来。后来又聊着聊着说到了多线程;
第三个问题:一个线程销毁之后还能再start嘛?
我:能吧?(我没有注意过啊)所以相当于问了三个问题都没答出来,小姐姐似乎感觉到我的水平了,所以就没再多问了,就讲起了我这几个月的生活,早起看算法,白天听课,晚上调电路还得复习白天的,每天已经用尽了我最大的力气了,我也说到了自己面的不好,(事实上第一是因为我很紧张,第二我确实有的地方掌握的不是很深入)。
她很亲切的说没关系,几个月能成这样已经不错了。然后最后聊了聊别的就结束了。其实后来我才知道这个小姐姐是清华的,更加坚定了我去阿里的决心,我渴望去一个周围都是大神的地方磨炼自己!
结束之后我仔细分析今天的面试,总结了一些经验,而且深刻的明白是要稍微准备一下,尤其是并发编程这块的知识点,所以接下来的几天我疯狂弥补之前的一些知识漏洞,等待接下来的正式面试。
几天后是一面,一面整体的节奏比较缓,主要是以技术问题为主,没有加入太多的聊天内容,面的也比较久,一共面了一个多小时,下面是一面的题目:
1、线程实现的方式
2、线程池的理解
3、hashmap的底层,你怎么了解的
4、jvm底层
5、垃圾回收机制
6、怎么理解mvc
7、排序算法选一种(我选的快排)
8、单点登录引出来的一个问题,如果通过A域名访问了A系统,通过B域名访问了B系统,B系统如何知道此客户端也访问了A系统
9、类加载机制
10、说一说ThreadLocal的理解
11、爬虫用什么做的,怎么做的
12、如果爬取到的数据格式不一致怎么办(针对我的那个新闻网站)
13、你对你这个项目的数据有没有一些其他想法?如果让你重新做,你会有哪些改善
14、你这个项目的架构说一说
整体来说,一面的基础性问题比较多,所以博主基本都答出来了,准备过还是有些用处的。所以一面完了感觉还不错,接着第二天下午就二面了。
二面过程
二面是我最慌的面试,因为二面是最关键的,是最大的主管面试,所以非常关键,整体来说,二面的节奏非常快,和一面完全不同,面试官很希望我言简意赅的说完答案,所以面的不算很好,当时完了又以为GG了,好在最后还是幸运的过了,面试问题如下:
1、静态方法和实例方法的同步有什么不同?
2、future类的作用
3、红黑树比平衡二叉树的优势
4、知道最大堆,最小堆嘛?描述一下堆排序
5、redis是单线程还是多线程的,说说redis的优势
6、了解AOP嘛,基于什么原理的
7、3点15分的夹角是多少度
二面面试官问的很急,我答的也快,所以有两个问题答的不好,但是面试官让我觉得有一种肃然起敬的感觉,因为他说话比较快,但是都能说到点子上,最关键的说的话非常让人容易接受。
二面过了,当天晚上我就接到了三面的电话(阿里的效率真的让我瞠目结舌)
三面过程
三面是交叉面试了,基本都围绕我的项目展开,我经过前面几次的面试之后,这个时候已经拥有了很高的面试经验值了,所以三面的时候我一点不慌了,回答问题非常稳重(一面刚开始的时候腿在抖。。。),三面的问题如下:
1、介绍以下你项目的特色
2、说说你这个项目的分工,以及在团队协作之间遇到的问题
3、用java爬虫有什么不好
4、谈谈你对mycat的理解以及如何进行数据库的双机热备
5、谈谈redis如何构建集群,数据在底层是如何进行同步的
6、网络连接和断开的过程?为什么是4次挥手不是3次?
7、数据库事务的四个特性
8、volatile关键字的作用
9、估算一下7的128次多少位(这个数学问题,我当时没想出思路,只估算了个100,虽然蒙对了,但是思路没给出,事实上这个题的思路有点难的)
三面还算比较顺利,基本都是我在说,所以也很快过了,第二天早上就收到了HR终面,两天4面,鬼知道我那两天经历了什么。。。
HR就基本问一些基本情况了,没有技术问题,只要人不是不正常感觉都没啥问题。
经验总结
总结一下面试经验吧,虽然我只经历了阿里的面试,但是这几场面试足以让我总结出面试的门道了:
1、自我介绍非常重要,基本上是主导你的整个面试的过程的东西了,一定要好好准备自我介绍,把面试官往你熟悉的地方引
2、见机行事,如果面试官不急,你就不要急,回到的时候多说一点,尽量把只是穿起来,往你熟悉的地方引,比如博主的1面,问我HashMap的底层,我就不仅说了它底层是一个数组加链式栈,还说了链式栈的目的是解决哈希冲突,还说了解决哈希冲突有两种方法:一种拉链法,一种线性探测法,hashmap采用了前者,(我现在还知道了ThreadLocalMap采用后者,这个知道的人不多,如果你顺着引出来,加分很多)。如果面试官比较急,证明他有很多人面,他希望在最短的时间里让你说出关键的东西,比如博主的二面,我们就不需要扩展说,言简意赅即可
3、一定要好好准备,对一些常用的内容进行深入的探究,比如现在面试必问的多线程高并发,JVM底层,数据结构和算法,一定要 挑一些进行深入的探究
4、最好有一个完整的项目或者有一个担任重要角色的项目,对这个项目非常熟悉,并且要想好项目开发过程中遇到的问题以及如何解决的
5、不装,会就是会,不会就是不会,不要猜,我二面就犯了错,面试官问我redis单线程还是多线程,我随口一说:多线程吧?面试官:猜的吧?我:是。。。。面试官:不会不要猜!所以我当时慌的一批!
(一)调整自己的心态,正确面对得失
面试中常见的问题,主要是心态,面试调整心态是第一位的,如何调整成最佳心态呢?很多求职者在面试过程中自己思路不清晰,语言不流畅,说话毫无逻辑,会不断否定自己,归根结底都是面试心态问题,所以调整自己的心态,正确面对得失是非常重要的,我的方法是给自己足够的心理暗示。
(二)提升技术,扩宽知识
对于程序员来说,要想成长为一名行业内的大牛大神级别的人物,那么唯一的办法就是通过学习,来不断提升自己的技术,扩宽知识,达到一定的高度和深度。那么如何提升自己的技术,扩宽自己的知识储备呢?
以下是我个人的一些做法,希望可以给各位提供一些帮助:
**Java部分:**Java基础,集合,并发,多线程,JVM,设计模式
**数据结构算法:**Java算法,数据结构
**开源框架部分:**Spring,MyBatis,MVC,netty,tomcat
**分布式部分:**架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等
**微服务部分:**SpringBoot,SpringCloud,Dubbo,Docker
(三)刷题
如何刷题?这是很多现在面试者心中的困惑,我们都知道,面试前刷题是很有必要的,毕竟很多题目都有一定的共性,刷足够题目就能够做到举一反三,甚至在面试时,被问到原题,能够侃侃而谈,那么刷题如何进行呢?建议:最好找一些历年的面试原题,分专题来对自己进行训练。
以下是我私藏的面试题库:
对于大厂面试,我最后想要强调的一点就是心态真的很重要,是决定你在面试过程中发挥的关键,若不能正常发挥,很可能就因为一个小失误与offer失之交臂,所以一定要重视起来。另外提醒一点,充分复习,是消除你紧张的心理状态的关键,但你复习充分了,自然面试过程中就要有底气得多。
以上内容中所有的学习资料、面试资料,均可以免费提供,希望大家金三银四面试顺利,拿下自己心仪的offer!
需要的朋友:直接点击文档窗口(https://jq.qq.com/?_wv=1027&k=gLUIIwrn)免费领取~
欢迎关注:Java架构进阶团。里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。