1.数组逆序(直接两个指针一头一尾交换,还有栈,先入后出,然后我说栈不好,占用空间大)
2.找到一个数组中K个最大的数,我说建一个K个数组的小顶堆,然后发现比最小值大的,就更新堆,复杂度为(nlogk)
3.spring,IOC和AOP的原理,已经应用,以及实现(AOP实现可能答得不太好,动态代理JDK反射,以及过滤器)
4.如果有一组重复数字,我要你找出来,你怎么解决,这个我当时就说HashSet集合,可以去重复,然后我又问,是要找出重复数字?面试官说是的,然后我就说用HashMap,将数字作为Key,出现次数作为value,然后再遍历,找出value大于1的Key,就是所要答案了,面试官说好的
4.java垃圾回收
(这个有些地方记得有些模糊,内存不够的时候垃圾回收,其实确切的来讲是这样 Eden space 完成内存分配,当Eden满了,再创建对象。会因为申请不到空间,除法Minor GC.进行 (Eden+S0或者Eden+S1)新生代垃圾回收,Minor GC时,Eden Space不能被回收的对象被放入到空的survivor(S0或者S1,Eden肯定会被清空),另一个Survivor里不能被GC的也会放入这个,必须保证有个Survivor为空。step3 如果survivor满了,则这些对象会被copy到old区,或者survivor没有满,但是有些对象足够被放到old space,当old space满了的时候,进行full GC.
问我项目中遇到的问题,有一个内存泄露,内存泄漏就是有一个长期存活的对象持有短命对象的引用,导致短命对象无法被释放。还有些性能优化。
阿里二面,技术大哥,直接问并发编程。syntronized 内部实现,我说加锁(还有些别的东西,暂时未整理)。
Runnable 和 Thread的区别,一个是类一个是接口,还有(当时并不知道)Runnable可以方便的进行资源共享,thread并不能,thread实现了runnable接口
相关资料参考http://developer.51cto.com/art/201203/321042.htm
run()和 statr()的区别 我觉得还有更详细专业的答法http://www.cnblogs.com/linjiqin/archive/2011/04/10/2011272.html
问了设计模式 单例模式 与装饰者模式
问了重写和重载 返回值不一样 算不算重载
问了hashmap的实现
阿里三面:
自我介绍
项目经验
spring
抽象类与接口的区别
Java垃圾回收
列一个我读过的书单吧:
Java编程思想 细读
Java核心技术 扫过其中几章
数据结构与算法分析-java语言描述 细读 手写代码实现
effective Java 读了1/2 关于java常用知识点的思考 目前正在看
深入理解java虚拟机 重点看了内存回收 以及类加载
java并发编程 看了一些章节 目前正在看
算法设计与分析基础
算法导论 看了一些章节
编程珠玑 主要是讲编程思想
深入理解计算机网络 看了其中几章TCP-UDP HTTP
大话设计模式 21种设计模式 有些东西讲的不是很清楚
heard First设计模式 常用的13种设计模式 讲解清晰
heard First sevelet &JSP 读了1/2了解了一些基本的东西
程序员面试宝典 感觉是三本书里面 看着最顺眼的
剑指offer 很多例子用C++实现 看着不爽
编程之美 很多游戏题 想法很有意思
1、有没有登过网页版微信,问我用手机扫二维码登录是怎么实现的?
2、多线程,线程与进程有什么区别?结合内存说下
3、spring,IOC和AOP的原理,以及它的应用和实现?
4、Spring相关,要把一个组件注入到Spring中该怎么做?
5、collection的理解,选择一种说下底层实现?
6、JVM内存模型,JVM加载原理。
7、spring的理解,如何进行bean的配置,用ssh做没做过什么项目?
8、有什么想问我的?
1、根据大部分阿里巴巴java开发工程师面试经验,java的多线程和并发安全性及数据库相关这些都非常重要。
一面通常是聊一些java基本功,二面就是聊项目,三面谈理想和人生。
2、对于java一面问题,通常面试官的提问都有逻辑性,抓住他的逻辑主线,你就可以大致知道他下面要问什么。
所以,你可以尽量往他想要问的方向去说,这样你也可以游刃有余,进退自如。
3、多阅读和总结开源框架的具体底层实现源码。
4、建议还是准备一些秘密武器,譬如Java的虚拟机的内容、IO包和NIO包中的内容、Java的数据结构相关的类实现原理、Java并发包当中的(类、作用、实现原理)这四块你能够非常精通,那基本上面试不会有太多问题。
分布式对于阿里完全就是灵魂的存在,阿里构架就是基于分布式构架搭建的框
消息队列也是解决高并发消息传递的技术,类似缓存一样,将消息存入队列,然后供消费者异步调用,解决阻塞,以及秒杀,采用的也是消息队列技术。
说一下JAVA8新特性
http://blog.csdn.net/u012073449/article/details/50990546
http://blog.csdn.net/vacblog/article/details/44277599
http://blog.csdn.net/u011958281/article/details/77050966?locationNum=6&fps=1
http://blog.csdn.net/u011958281/article/details/77098013
http://www.mianshi365.com/561.html
http://blog.csdn.net/no_endless/article/details/60880436
https://mp.weixin.qq.com/s/qRwDowetBkJqpeMeAZsIpA
http://www.ujiuye.com/shaanxi/2017/15185.html