蘑菇街二面
蘑菇街,在大学有女朋友的时候听说的,倡导一种弹性自由轻时尚女性购物文化。开始以为蘑菇街是阿里旗下,原来淘宝也只是供货商而已(PS:实话实说)。值得一提的是,相比阿里,我更喜欢蘑菇街的面试官的准时和HR对待面试人员的贴心程度!
整个面试半个小时
- 自我介绍
- LinkedList和ArrayList的区别?LinkedList实现是单链表还是双链表结构?
1 | /** |
JDK上面的解释:
1 | public class LinkedList<E> |
List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove 和 insert 元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈、队列或双端队列。
此类实现 Deque 接口,为 add、poll 提供先进先出队列操作,以及其他堆栈和双端队列操作。
所有操作都是按照双重链接列表的需要执行的。在列表中编索引的操作将从开头或结尾遍历列表(从靠近指定索引的一端)。
注意,此实现不是同步的。如果多个线程同时访问一个链接列表,而其中至少一个线程从结构上修改了该列表,则它必须 保持外部同步。(结构修改指添加或删除一个或多个元素的任何操作;仅设置元素的值不是结构修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方法来“包装”该列表。最好在创建时完成这一操作,以防止对列表进行意外的不同步访问,如下所示:
1 | List list = Collections.synchronizedList(new LinkedList(...)); |
此类的 iterator 和 listIterator 方法返回的迭代器是快速失败 的:在迭代器创建之后,如果从结构上对列表进行修改,除非通过迭代器自身的 remove 或 add 方法,其他任何时间任何方式的修改,迭代器都将抛出 ConcurrentModificationException。因此,面对并发的修改,迭代器很快就会完全失败,而不冒将来不确定的时间任意发生不确定行为的风险。
注意,迭代器的快速失败行为不能得到保证,一般来说,存在不同步的并发修改时,不可能作出任何硬性保证。快速失败迭代器尽最大努力抛出 ConcurrentModificationException。因此,编写依赖于此异常的程序的方式是错误的,正确做法是:迭代器的快速失败行为应该仅用于检测程序错误。
此类是 Java Collections Framework 的成员。
- 了解HashMap吗?与HashTable有什么区别?
- Java里面的基本类型
基本类型:boolean char short byte int long float double(8个) - 谈谈你是怎么学习android,遇到过哪些困难,如何解决的
http://www.cnblogs.com/newcj/archive/2011/05/30/2061370.html - 算法题:将一个数分解为素数的乘积
我写了一个很蹩脚的程序。。。
1 | void resolve(int n){ |
阿里一面
很普通的面试,每个问题问到你不懂为止。但是这个面试官是唯一一个认真看完我的简历的人,很感动!因为没提到的一个问题都是关于我的项目。虽然很不堪,但是自身的不足是明显的事情!所以继续加油准备。
数据结构
IDEA和eclipse ide有和区别
java基础
- 熟悉的classLoader有哪些
http://www.cnblogs.com/Lawson/archive/2012/07/31/2616623.html
http://ifeve.com/classloader/ - Concurrent包有了解多少
- CAS是怎么实现的
http://www.tuicool.com/articles/zuui6z
http://blog.csdn.net/hsuxu/article/details/9467651
http://www.ibm.com/developerworks/cn/opensource/os-cn-cas/ JVM内存模型和回收机制
http://www.cnblogs.com/dingyingsi/p/3760447.html
http://jbutton.iteye.com/blog/1569746类什么时候被卸载
http://www.cnblogs.com/mengdd/p/3594608.html
http://yhjhappy234.blog.163.com/blog/static/316328322011101413730764/- 线程同步lock里面的一些方法
http://www.cnblogs.com/dolphin0520/p/3923167.html
http://www.2cto.com/kf/201302/189404.html
JavaEE
- Spring 的AOP和IOC分别是什么,日常使用在哪些方面了?
基本原则:业务逻辑代码应该写在 M 里面,而应用程序逻辑应该写在 C 里面。V 只是单纯的展示数据。
1:数据访问层:主要看数据层里面有没有包含逻辑处理,实际上它的各个函数主要完成各个对数据文件的操作。而不必管其他操作。
2:业务逻辑层:主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。
3:表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。
而Struts只实现了MVC的View和Controller两个部分,Model部分需要开发者自己来实现,Struts提供了抽象类Action使开发者能将Model应用于Struts框架中。
http://blog.csdn.net/kiss_vicente/article/details/6902879
http://bbs.csdn.net/topics/350251143 - hibernate缓存机制?
http://zhidao.baidu.com/link?url=5nqJQAJH4UahoxwzeTs-G1enHJ_s-5mCer-Xr91y5PQ7KmDtDjS0r_coyKxQ2qBtCrXJVmuCYkNpE2NWyCaLBa
http://blog.csdn.net/defonds/article/details/2308972 - 谈谈你是怎么学习android,遇到过哪些困难,如何解决的?
http://blog.csdn.net/mirkerson/article/details/7238815
android生命周期
网易笔试(部分回忆)
- 观察者模式,设计模式20+!
- 关于Eden,From Survivor,To Survivor,Old计算
Xms指你的程序的初始化内存大小,Xmx指定你的程序占用的最大内存。单位默认字节,可以采用k,m做为单位。
Xmn是指分给年轻代大小
SurvivorRation:是Eden:Survivor比例.
-XX:NewRatio=4,年轻代和老年代的比值是1:4
-XX:MaxPermSize=16m:设置持久代大小为16m。
-XX:MaxTenuringThreshold=0:设置垃圾最大年龄。 - ClassNotFoundException和ClassNotDefException区别
一个是加载时候没找到,一个是在连接时候没找到 - shell语言里面的权限
http://www.cnblogs.com/younes/archive/2009/11/20/1607174.html