面试失败总结

 今天一天参加了携程和京东的面试,面试的都是Java高级开发,最终都以失败告终。小公司和大公司的差距真的不是一般的大,所以还是要打好扎实的基础,希望能早日进入一线互联网公司。下面说说今天面试得一些问题。

## java基础
### List
1.两家公司都问了ArrayList和linkedList的区别,这个大家应该都会的,当然大公司要的并不是这些,都问了具体的实现,如何存储数据和一些底层的特性。这个携程问的比较深入一点。具体问题如下:
ArrayList是用什么存储数据的,ArrayList的默认长度是多少,ArrayList在什么时候扩容,是如何实现扩容的,ArrayList是不是线程安全的,不是的话如何实现线程安全,存储了大量数据的ArrayList在读写比较频繁并且有少量插入的时候如何优化。。。可能没有记全。

2.第二个就是Map了,主要是问HashMap, HashMap的默认长度,扩容机制,当put的key-value的key重复时,hashmap是如何处理的(这个两家都问的),hashmap底层是如何存储数据的,如何通过key值找到对应的value。。。

3.String StringBuffer StringBuilder的区别,String最慢的原因是啥

### 线程
1.线程池的几种实现方式,如何利用多线程处理并发问题

### JVM
1.是否了解JVM的优化,详细说说工作中使用了那些JVM的优化。

### Spring
1.Spring的Bean的生命周期,Bean除了单例还有什么其他形式存在,beanfactory 和applicationcontext的区别,@Resource和@Autowired的区别在哪,说说你是怎么理解AOP的,当存在多个切面方法时如何保证切面执行的顺序。

### 其他
上面的几个分类时都会问的,基本都会问到源码和具体的实现。还有一些其他方面的问题:redis的数据存储有哪些形式,hibernate是如何实现对象和数据库的映射的,MySQL的索引有哪些,实现原理是什么,冒泡排序算法,快速排序算法(当场写算法)

### 总结
通过上面的面试题可以看出,大公司问的都是些源码和如何优化的问题,但是我们在小公司,代码的性能问题基本是不用考虑的,主要是如何实现业务,这也我的软肋所在,接下来的时间要注重代码的细节,多考虑一些高并发的东西,数据结构,算法还有源码,希望能早日去大公司!

你可能感兴趣的:(面试)