笔试
两小时5道算法题,在阿里自己的答题系统上完成
一面 43min
1、自我介绍
2、介绍一下你最深刻的项目,项目架构是什么?(后面围绕项目展开提问)
3、项目中遇到的难题是什么?你怎么解决的?
4、项目你觉得有哪些需要改进?从中学到了什么?
5、String不可变的原理是什么?为什么要设计成不可变的?
char数组用final修饰的;如果可变,字符串常量池引用会混乱;String缓存了自己的hash,如果可变,但是hash不会变,在HashMap、HashSet中会出现问题;String经常用作参数,如果可变则不安全。 6、StringBuilder和StringBuffer的区别?看过它们的源码吗?他们谁的性能高?
线程安全问题,StringBuffer使用了synchronized,StringBuilder性能较高 7、String str1 = "abc" 创建了几个对象?String str2 = "ab"+"c"创建了几个对象?
考察字符串常量池 8、ArrayList和LinkedList插入一条数据时谁的效率高?插入上万条数据时谁的效率高?
插一条数据分在什么位置插,如果末尾则差不多,如果中间则LinkedList;插入很多条的话考虑到ArrayList会扩容,LinkedList高 9、HashMap源码看过吗?实现原理是什么?
10、实现线程池为什么不用Executors的静态方法生成固定的那几个?
FixedThreadPool和SingleThreadPool使用了无界队列,会出现OOM,CachedThreadPool和ScheduledThreadPool的最大线程池数设置为Integer.MAX_VALUE,也会出现OOM 11、如果自己创建一个ThreadPoolExecutor,怎么设置核心线程池数和最大线程池数?
几个参数的原理,如何设置这些参数要看具体使用场景,cpu密集型和io密集型 12、Java中的注解有哪些?你自定义过注解吗,怎么用的?
13、说一个你熟悉的排序算法,怎么实现的?
14、说一个你熟悉的数据结构,你可以怎么实现?
15、项目中用到的设计模式,怎么用的?
16、你有什么要问的吗?
二面 45min
1、TCP和UDP的有什么区别,原理是什么?
2、浏览器中访问一个网址,都发生了什么?
3、spring加载bean的流程是什么?
4、synchronized和lock的区别?
5、ConcurrentHashMap的原理是什么?
6、说说JVM的内存结构?
7、垃圾回收算法有哪些?
8、Mysql的索引
9、了解MySQL的隔离级别吗?说说各自解决的问题
10、什么是死锁?产生死锁的条件有哪些?处理死锁的方法有哪些?
11、说说你了解的设计模式
12、平时是怎么学习新技术的?
13、你还有什么要问的吗?
已拿offer,阿里实习只有两轮技术面,三面是hr面。总的面试体验是,菜鸟面试非常注重基础,计网、操作系统、java基础这些,还有基本的数据结构和算法都要掌握。简历上没写的东西,面试官简单的问一下就不会再深入,但简历上写了的知识一定要掌握到,像分布式、ES这些我没有写在简历上,面试官就不会去深入。
全部评论
(12) 回帖