周围同学阿里面经
1.Java基础 ArrayList,HashMap等集合框架类,重要基础类String等的处理。HashMap的底层存储结构等。 (也可以顺带考察下对接口,继承,重载重写的基本理解;以及异常处理的注意事项)。
2. 数据结构与算法 常见的查找算法及时间复杂度。 常见的排序算法及时间复杂度。 比较重要的数据结构,如链表,队列,栈的基本理解及大致实现。
3. 多线程问题
1)线程安全问题。 HashMap 是否线程安全,为何不安全。 ConcurrentHashMap,线程安全,为何安全。底层实现是怎么样的。
2)J.U.C下的常见类的使用。 ThreadPool的深入考察; BlockingQueue的使用。(take,poll的区别,put,offer的区别);
3)原子类的实现。
4)各种常见锁使用 如果上面这些掌握很好,还可以看看更深一点的 False Sharing,Cache Line,可见性与原子性等;
4. JVM Java内存分代模型,GC算法,JVM常见的启动参数; CMS算法的过程。 这块回答较好,也可以只是看毕玄的Java分布式开发或网上文章的学习, 可以结合JVM启动参数常见配置,jstat等命令,看下动手能力,意愿;以及实际线上问题排查。
5.Linux使用与问题分析排查
1). grep,awk,sed; 是否自己写过shell脚本;
2). 常见的cpu
load过高,us过高,一般是什么问题。引申出是否用过top,jstat,jstack等。 常见的内存问题一般有哪些。 引申出是否用过free,top, jmap等。
6. 框架使用 spring aop的底层实验原理。 aop与cglib,与asm的关系。 spriong ioc的生命周期,(init-method,intilizingbean接口方法afterPropertiesSet的先后顺序)等。 Hibernate对一二级缓存的使用,Lazy-Load的理解;
7. 数据库相关: 1. mysql存储引擎中索引的实现机制; 2.数据库事务的几种粒度; 3.行锁,表锁;乐观锁,悲观锁
8.网络协议: HTTP协议; HTTPS协议,SSL协议及完整交互过程;
9. redis redis,mem***底层客户端使用一致性Hash,看是否了解; redis的事件驱动多路复用底层实现;引申到NIO编程, 看对Netty,或mina是否了解。 如果候选者同时用过mem***,redis,看下是否了解两者在使用场景上的区别。以考察使用深度,以及是否有好奇精神。
10. 设计模式与重构 常见设计模式,如singlen,factory,abstract
factory,strategy,chain,adaptor,decorator,composite,template,absever等。 重构:重构书籍
11. 学习与进取心 最近上过上哪些技术站点; 最近在看哪些书。
12. 抗压能力及抗压意愿 了解加班情况,了解是否愿意在一段时间996等;
13 稳定性考察 了解家庭婚姻状况, 了解购房及居住地,籍贯情况,了解目前薪资,评估稳定性




