本人北京211研究生,应聘阿里北京Java研发实习,过了笔试,听说面试很考基础,紧张的复习了半个月Java基础,看HashMap等集合的底层实现,看concurrent包的类,从面相对象概念开始一点点的复习Java基础知识,看Java内存模型,看Spring MVC、Spring、Hibernate、Mybatis特点、看Mysql索引和优化,看计算机网络、看算法排序,查找,动态规划,分治……想在尽量有限的时间里多复习复习。
前一天晚上半夜满脑子想着怎么回答考官问题,重复演练自我介绍,然后不知不觉到天亮才睡着,睡了三个小时爬起来继续看算法和数据库优化等介绍,想着把原来实习时候做的数据库优化好好讲一讲,显示自己有解决问题的能力。然而一切并没有想象的那样简单。。。。
预约面试14:15,百度地图说1小时20分钟可以到达,计算一下应该提前一小时到场,避免发生意外,所以12点从宿舍出发。经历一个小时到达面试场地,原来那儿是雅虎的办公场地。进场前签到,刷了一下自己的条码(笔试通过系统里给发到,阿里应该是不希望有人去霸面),就到候厂区坐着了,人不是特别多,大屏幕上放着面试人以及对应的面试桌号,时不时会有叫号xxx到第几桌面试,同时手机也会发短信告诉你去哪儿面试。我到的时候刚到13点,所以估计自己还得等1个小时,坐着继续演练自我介绍,希望自己能通过自我介绍就抓住面试官的眼球。正想着,突然就叫到了我的号码,好吧,看来我来的早就提前安排面试了。心想不管了,就这么上战场了……
一面
面试官是一个胖胖的中年人,我递过去简历,打了声招呼,他说:“我先看看你简历啊”。
我说我是不是应该先做个自我介绍,他说不用,我先看看你最近做的项目( 我靠,这不按套路来啊,不让我自我介绍,那我怎么用我那勤奋刻苦,年纪轻轻,主持数个外包项目,靠写代码供自己读书生活,荣誉证书拿一摞最后保送读研的大学生活来征服你)。
我只好等着他把我的项目看完,然后问最近做的学校招生网是个什么样的系统,我介绍了一下系统功能,他让我画架构图,可能是我没描述清楚,他最后用电脑访问了那网站,让我给他再讲讲这个网站是做啥的(那是个php写的内容管理系统,我是来面Java的,你为啥要追着这个问,我简历上写这个项目,原本是想证明我能做出可以供别人使用的成型系统,想问Java技术应该问我实习的项目啊,我实习做的是Java诶)。
最后他又让我说一下其中的一个二级页面是怎么实现的,我balala的给他讲了一下,第一项目算基本问完了。他说你这个项目没有注册是吧,我说是,这个项目前端就是为了展现内容,不让用户注册,但是后面有一套它的管理系统(我想让他问问后台管理系统的事儿,一个前端有多少好问的)。然而它并没有问啥,就感觉有些失望的问了下一个问题。
你常用哪些Web框架? “Java的还是不限制语言?”
Java的。 “SpringMVC、Spring”
那你说说Spring的特点! “IOC和AOP啊,为啥要用IOC(以下为我的回答的概括),IOC的实现,为啥要用AOP,AOP的架构实现(代理和反射)”说说Spring AOP是怎么实现的? “(没看Spring源码,有点儿懵逼)使用动态代理和反射balala(尽量把自己知道的往外说,最后他补充了一个在实例化一个类的时候,在二进制文件中加入AOP切面代码的方法,第一次听说诶 =^=)”
聊聊面向对象吧! “我就把对象的概念,抽象,继承和封装以及单一职责原则,开闭原则等等说了一遍以及介绍自己的理解”。
你做的都是Web项目是吧? 我指给他看,“我这儿有个Java SE的项目,用Java实现的类似QQ的东西”(我特别希望他能问点儿Java的知识,不要再问Spring的东西了)。好,那问你个计算机网络的事儿吧,你写的这QQ,两个人在公司内网使用,怎么进行聊天。 当时一想,我靠,内网ip不能拿来通信啊,结果就卡在这儿了,我说内网ip不能在公网上通信,这我解决暂时解决不了,我说您有什么办法?他给我在纸上画,两个客户端都访问公网服务器,建立socket连接,然后由服务器将一个客户端的消息转发到另一个客户端,我突然就想起来,我的那个项目就是这么实现的。。。并没有去把两个客户端去简历socket连接,自己把自己绕进去了。。。
你自己写个线程池,说说思路 用一个容器,比如数组来存储线程,提供线程的put方法,将线程放到线程池中,并且提供线程溢出策略和线程池扩展策略。提供get方法,从线程池获得线程,如果没有线程了,需要等待,等待超时返回错误信息。
如果你自己写一个类似与Tomcat的服务器,你会怎么做? “首先有两部分,一部分是处理HTTP请求,另一部分来管理类的实例化和调用,等等”
好吧,感觉你反应挺快,东西也都知道,但是不够了解,让你过吧,估计二面那帮中层技术你也过不了 “其实我今天来,目标就是能进入二面,这是我第一次面试(我的第一次啊),希望您能给我个机会让我去学习学习。”
二面都是考的特别基础的,算法什么的,你算法怎么样?要不我问你一个,求树的高度 “这个我会,前两天还在leetCode刷过这个题,用递归,遍历左右孩子,返回左右子树最大深度+1”
判断是否是平衡二叉树呢? “就是比较有没有根节点到叶子节点的距离比其他的大于一”
行吧,让你过吧,去试试吧 (面试官觉得反正你也过不了二面,是让你过呢? 还是让你过呢? 还是让你过呢?让你过了去试试吧 )“真的是非常谢谢您,我能问您个问题吗?“
可以,你说吧 “阿里想招什么样的人?”
阿里想招的人,首先是是要能解决问题的,你的项目都是web的,这要是本科生还行,但是研究生还做这样的项目,就不行了。(然后给我看他电脑里的面试评审要求,其中一点是:有能独立解决相应重要问题的能力,最好有发表相关论文或者专利,看来研究生要求还是挺高,我这一年研究生没啥提高,还是本科的水平啊)“那一般其他人都是什么样的项目?” 面试官翻了翻简历,漏出一份简历的一部分,是一位北邮研究生的简历,最新的项目是做一个物联网平台,我问:“这是导师的项目吗?“ 面试官说是的。(我们学校专硕基本上是散养政策,也没什么导师的项目可以做,就是尽早自己实习或者自己找项目做,看来我得回去自己弄一个niubility点的项目了)
最后我向面试官表示了感谢,就回到大厅等二面,一面完事儿感觉放松多了,反正二面没什么希望了,二面就是体验学习一下,尽力发挥吧(一面共用时50分钟左右)
二面
之前为了准备很多Java基础,HashMap的底层实现以及Java内存模型,想着面试官你就让我说说HashMap的底层实现,让我画画Java内存架构吧。二面进去,面试官是一个一看就是技术宅的人,那长长的头发,那呆板的表情,那小身板。递过简历,他快速的浏览了一下,让我做自我介绍,我把准备了无数遍的自我介绍(包括的我现在情况,本科期间的发展过程,获得荣誉,技术成长和遇到问题,研究生期间情况,对未来的展望),然而面试官貌似并不感兴趣。
我们说说Java基础知识吧,讲讲hashcode和equals (这个我看过,但是现场整理语言还是有点仓促) 讲Object中的hashcode和equals,讲了HashMap的hashcode和equals的应用,以及hashcode和equals关系(hashcode一样,equals不一定为true,equals为true,hashcode一致)
说说Spring的两大特点 "IOC和AOP,为什么要用IOC呢"
我不听作用和背景,说怎么实现的? (没看Spring源码, N脸懵逼) 这个我说不上来。说说Spring有哪些IOC注解 “我只知道autoware”
线程如何返回结果 (我看过)“实现callable接口” 要实现什么方法 (那个接口的函数式啥了??不是run但是很简单的名字,想不起来了,应该是call)“我给忘记了” 返回结果是什么 “我记得是一个Object对象” (不知道是和啥记混了,应该是返回一个Future对象的)
说说你配置过的Java参数 “我配置过Java运行时堆的 但是我忘记参数名是啥了 有Xm什么的” (平时配置那一大长串,并没有记住他)
你有什么问题吗? (我就是想知道阿里招的都是什么样的大神)“我想问阿里最想找什么样的人?”
面试官简洁的回答 “基础好的”
基础好的 基础好 基础 基 ……
二面基本10分钟之内结束,基础太差,面试官不想浪费时间了,根本没有达到阿里的基础要求,不说了,我去复习基础了,待我秋招再战……