少年游

欲买桂花同载酒,终不似,少年游。

0%

最近面试集锦

蘑菇街二面

蘑菇街,在大学有女朋友的时候听说的,倡导一种弹性自由轻时尚女性购物文化。开始以为蘑菇街是阿里旗下,原来淘宝也只是供货商而已(PS:实话实说)。值得一提的是,相比阿里,我更喜欢蘑菇街的面试官的准时和HR对待面试人员的贴心程度!

整个面试半个小时

  1. 自我介绍
  2. LinkedList和ArrayList的区别?LinkedList实现是单链表还是双链表结构?
1
2
3
4
5
/**
* Doubly-linked list implementation of the {@code List} and {@code Deque}
* interfaces. Implements all optional list operations, and permits all
* elements (including {@code null}).
*/

JDK上面的解释:

1
2
3
4
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, Serializable

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 的成员。

  1. 了解HashMap吗?与HashTable有什么区别?
  2. Java里面的基本类型
    基本类型:boolean char short byte int long float double(8个)
  3. 谈谈你是怎么学习android,遇到过哪些困难,如何解决的
    http://www.cnblogs.com/newcj/archive/2011/05/30/2061370.html
  4. 算法题:将一个数分解为素数的乘积
    我写了一个很蹩脚的程序。。。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void resolve(int n){
int i = 2;
while(n != 1){
if(n % i == 0){
n = n / i;
print("%d",i);
}
else
{
i ++;
}

}
}

阿里一面

很普通的面试,每个问题问到你不懂为止。但是这个面试官是唯一一个认真看完我的简历的人,很感动!因为没提到的一个问题都是关于我的项目。虽然很不堪,但是自身的不足是明显的事情!所以继续加油准备。

数据结构

  1. 堆和栈的区别
    成员变量存放在堆上
    局部变量,Java栈上
    操作数存放在栈顶,一般实现是物理CPU寄存器
  2. 大根堆和小根堆
  3. B+树是什么数

IDEA和eclipse ide有和区别

java基础

  1. 熟悉的classLoader有哪些
    http://www.cnblogs.com/Lawson/archive/2012/07/31/2616623.html
    http://ifeve.com/classloader/
  2. Concurrent包有了解多少
  3. 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/
  4. JVM内存模型和回收机制
    http://www.cnblogs.com/dingyingsi/p/3760447.html
    http://jbutton.iteye.com/blog/1569746

  5. 类什么时候被卸载
    http://www.cnblogs.com/mengdd/p/3594608.html
    http://yhjhappy234.blog.163.com/blog/static/316328322011101413730764/

  6. 线程同步lock里面的一些方法
    http://www.cnblogs.com/dolphin0520/p/3923167.html
    http://www.2cto.com/kf/201302/189404.html

JavaEE

  1. 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
  2. hibernate缓存机制?
    http://zhidao.baidu.com/link?url=5nqJQAJH4UahoxwzeTs-G1enHJ_s-5mCer-Xr91y5PQ7KmDtDjS0r_coyKxQ2qBtCrXJVmuCYkNpE2NWyCaLBa
    http://blog.csdn.net/defonds/article/details/2308972
  3. 谈谈你是怎么学习android,遇到过哪些困难,如何解决的?
    http://blog.csdn.net/mirkerson/article/details/7238815
    android生命周期

网易笔试(部分回忆)

  1. 观察者模式,设计模式20+!
  2. 关于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:设置垃圾最大年龄。
  3. ClassNotFoundException和ClassNotDefException区别
    一个是加载时候没找到,一个是在连接时候没找到
  4. shell语言里面的权限
    http://www.cnblogs.com/younes/archive/2009/11/20/1607174.html

java学习

  1. 知识图谱
  2. 关于equals和==的最佳解释