2015阿里巴巴校招杭州java研发面经(初面)
2014年9月22日 杭州
早上6点中从城北的家出发坐了2个小时的车终于到了天目山路华洋宾馆。
我来到那是8点钟。面试10点开始引导人让我在沙发上先做一做。期间陆陆续续来个几个人。有个直接终面的研究生也来得特别早。我就和他搭了搭话。求教面经。
他说他前两轮问了问TCP慢启动的一些问题。然后随便聊聊天。。。
9点半开始引导者陆陆续续让来的人把简历交上来。
10点我进了面试房。可以参考半泽直树一开始的场景大家YY一下。面试官长得很年轻,看起来只有25岁左右。但满头白发,让我想起了马云的传销技术,和血汗工厂。。。
他看了看我的简历,让我做下自我介绍。
我开始和他讲了我大学时参加的ACM和数学建模还有暑假实习的一些工作。
我给他讲了下我实习用Oracle
然后他问了我数据库分页查找怎么查找。
我回答:select id,name form (select rownum id,name from table where rownum<=5050) tmp where tmp.id>=5000 and tmp.id<=5050;
接着他问了我什么是乐观锁什么是悲观锁,有什么应用场景
我回答说:乐观锁是利用数据库表中的一个version属性记录了版本信息。每个操作执行成功后都会与版本做比较如果版本没有问题则将版本+1;否则返回操作失败。
悲观锁是利用了for update实现的,当操作时用了for update时候oracle就会锁住这张表禁止修改。乐观锁在并发量大的时候效果好。悲观锁利用了数据库底层的锁易于实现。
之后他看了我简历有说spring然后他问了我spring AOP 是用java什么技术实现的
我回答说:利用了反射技术。
他追问那你能不能写个反射呢
我回答说:我只记得了反射技术能通过类名、方法名获得类的实例或者方法。但具体的类我需要查下api文档。毕竟平时不怎么用。
他问:model是什么
我说:model是持久层中的对象。记录数据库关系映射的。
他追问:如果不用ibatis只用jdbc那你也写model麽?
我回答说:当然写啊。
他接着问:那你有没有深入了解spring。
我回答说:没有。我没看过spring的源码。框架我都是上手用的。不过我struts2有点研究过原理写过demo。实现过类似的。
他接着问:xml有几种解析方式。
我回答说:好像有两种吧一个是S开头的,还有事DOM解析。(S应该是SAX)我平时都用dom4j。如果是json格式我就用贵司的fastjson解析。
他追问:如果让你不用dom4j你怎么解析xml呢?我说那我肯定用栈做呀。然后乱说了说。他说thinking in java中好像有说到。
我回答:这本书我刚入手,还没仔细看过。(貌似被鄙视了)
他问:你上次笔试时有道题你看看 for(i=1,n=1;n=0;i++) n++;这个程序
我回答说:貌似是个死循环啊。
他说:那你上次怎么回答错了。
我说:贵司智力题答到后面基本没时间了。。。
他说:你写个KMP试试。
我说:奥。。然后用C开始写。他说你用java写。我继续改用java。Kmp算法忘记怎么写了。。。他让我停止了。
接着他说:你可能没有深入研究一些东西。你会用。但可能你不知道原理。
我说:这些框架什么的目的当然我是先学会用。然后深入进去。框架很多我不能沉迷于此。
接着他说:你在学校除了实习做过什么?
我回答:主要打比赛。然后随便做了做小东西。什么C#2048 、 学生管理系统、文件比较器、(聊天室)、(注册机)后面两个当时忘记说了。。。估计后面被鄙视了
接着他说:也就是你没做什么东西?
我说:嗯。。。他貌似想让我当场写2048.我说我带来了电脑您要不要看看?
最后他让我问了些问题。结束时和我握了握收让我走了。
出来时看网页源码状态变成了99.听说这个状态是备胎。。。。
总结:阿里可能需要的不光是技术好会写代码的。你可能还要有必要看看技术背后的东西。可能我一直以来是以业务为主导。技术背后的知识有些欠缺的挖掘。阿里上市了,在杭州这家公司算是不错的。作为从小在杭州长大的。但这家公司的要求可能很高。而我可能还未达到。。。。。。