阿里面经,顺便求判定是否凉凉
阿里一面
开始时间:2018-03-10 16 : 47
持续时间:31 m 1 s
面试开始:
痛苦,不想多说。阿里不愧是阿里,问的很有深度,而且都围绕着项目来。
面试题目:
自我介绍,巴拉巴拉大概四五分钟。
开题让我介绍自己的项目,让我特别详细的介绍,包括项目的初衷,如何进行的设计,项目中出现的问题,怎么解决的,项目现在怎么样。
提了一句项目中前端用什么,我说异步的框架,我不会,他问你知道Ajax嘛,我说我用过,没细问,不知道啥意思。
看我用了ActiveMQ,问我为什么用ActiveMQ,为什么不用其他类型的消息队列,我告诉他我不知道。ActiveMQ如何保证发送端和接收端能够发送出去和接收到,以及如何保证的安全性。卧槽?
看我用了MyBatis,问我#和$的区别,为什么用$不用#,我当时没想出来,告诉他一个是全文替换,一个是模糊匹配。后来说是防止注入攻击,然后我就马后炮了一下。
提到MyBatis,问我直到的数据的索引的数据结构,我说有四种,常用的是B ,还有哈希索引,但是哈希局限性太大,不常用。问我知道B-嘛,我说知道,就问我什么用B-,我说MongoDB,然后他问我B 和B-的区别,我和他说两个都是多叉树,区别在于一个非叶子节点上存数据一个不存,也就是说会影响高度。
问我知不知道volatile关键字,知道,就问我这个东西是干嘛用的,然后我把原理和他讲了一遍。问我多个线程如何按照顺序进行启动,我不造啊,我和他说我之前用过的方式都是Thread.sleep(),好尴尬。后来看好像是join,他以为我不知道这个关键字。
问我Spring用在什么地方,我就和他说每个地方都用,IoC和AOP,问我Spring默认是单例还是多例,我说单例,然后问我servlet是单例还是多例,我说是一个请求一个线程,然后居然答了多例,我肯定是疯了。然后问我知不知道ThreadLocal,我说再Spring里面见到过,问我作用,我说是为每一个线程复制一个对象的副本,问我线程安全吗,我说线程私有那肯定线程安全啊。
问我知道什么设计模式,我说单例、工厂、装饰者、***、建造者、模板方法,他觉得太少了,我就说还有策略。问我单例的写法,我就举了饿汉和三种懒汉。
问我GET和POST的区别,讲道理记不清了,只记得一个在请求头一个在请求体里面,然后觉得太少,就说在REST下,GET是幂等且耦合的,是获取资源的信息,POST是对资源进行添加。
问了两个简单的算法题,一个是查找链表倒数第k个节点,一个是判断是否交叉并且在哪里交叉,比较简单,装作自己没刷过这些题,还嗯了一会。
之后说数据库,我说MySQL,他问我视图,这尼玛是我最坑的一块啊,问我视图的作用,我说是保证安全,将其中一部分的字段提供,然后他问我确定嘛,然后我!改!了!我说是对使徒的修改就会将操作映射到不同的表里,相当于同时修改多个数据表。
总结:
感觉有点凉,最简单里反而没答上,绝望。我问要学习建议,他说没有;我问他你问的MyBatis和ActiveMQ我没深入了解,是不是要继续深入学习一下这方面,他说你毕竟也才用了一年,然后说了下#和$的问题;我问他说觉得怎么样,他说比最近面的其他人来比还可以,让我一周之内等消息。感觉有点凉。