天猫三面
一面
1. 自我介绍、项目介绍
2. Spring拦截器、实现了哪些方法?底层原理
3. AOP如何配置,底层原理、2种动态代理,aop注解实现,xml定义切面
4. Bean的作用域,单例模式是否线程安全?恶汉模式是否线程安全?bean如何结束生命周期?
5. Spring事务种类,如何回滚,A方法调用B方法,在B方法中出现异常,会回滚吗?(动态代理)
6. 快速排序时间复杂度
7. JVM内存结构详细分配,各比例是多少
8. 讲讲dubbo,数据库主从复制,2个节点读写分离,如何在读节点马上读到主节点写入的值
9. springboot和springmvc的区别
10. hashmap原理,hashcode做异或?位运算呢?
11. 原子锁和同步锁的区别,CAS底层原理
12. JVM调优,如何解决OOM
13. linux命令,如何改文件权限
14. 如何防止sql注入,了解哪些加密算法,rsa过程说下
15. mysql索引设计,联合索引,sql语句优化,abc索引,搜索b,会使用索引吗(走索引要回表)
二面
1. 目前的JDK使用的是什么垃圾回收算法,为什么要用这个算法?
2. 什么时候fullGC?
3. 类加载机制、说的详细点,符号引用如何解析,双亲委派模型
4. 如何设计服务器中session指定时间过期
5. AOP原理? 讲讲动态代理
6. spring中各种context有什么功能,他们之间有什么联系?
7. leftjoin和rightjoin的区别?
8. 讲讲TCP四次挥手,如何处理服务器大量端口处在timewait?
9. 缓存中维护100个键值对(LRU算法)
10. 谈谈synchronized、CAS
11. 支持高并发的数据结构,如ConcurrentHashMap的底层数据结构
12. 基于AQS实现的锁、信号量、计数器原理
13. Runnable与Callable的区别
14. 线程池的优势和作用
三面
1. 介绍下线程池,阻塞队列的用法,无界队列真的无界吗?
2. 说一下redis
3. kafka存储模型与网络模型
4. zookeeper与redis实现分布式锁
5. 乐观锁与悲观锁的区别
6. 分布式全局唯一ID如何生成,有哪些生成方式
7. 什么样的场景会出现服务器雪崩场景,具体怎么来解决。
蚂蚁三面
一面
1、HaspMap底层原理?HaspTable和ConcurrentHashMap他们之间的相同点和不同点?
2、由上题提到锁的问题
3、MySQL的表锁&行锁&乐观锁&悲观锁,各自的使用场景
4、Java线程锁有哪些,各自的优劣势
5、事务四大特性
6、事务的二段提交机制?
7、聚簇索引&非聚簇索引
8、G1回收器讲下回收过程
9、Tcp三次握手,四次挥手大概讲一下?
10、类加载过程
11、双亲委派机制及使用原因
12、JVM GC算法有哪些,目前的JDK版本采用什么回收算法
13、Http&Https的区别
14、Https的加密方式
15、线程池的核心参数和基本原理
16、线程池的调优策略
17、问问题(你有什么职业规划)
二面:
1、 java 什么时候发生死锁
2、如何避免死锁
3、 B+ 树的原理
4、分布式一致性协议,二段、三段、TCC,优缺点
5、分布式架构与微服务的关系
6、DNS解析过程
7、线程池实现过没?
8、Spring IOC、AOP
9、SpringBoot、SpringCloud的一些应用
10、ACID CAP BASE理论,以及RPC过程。
11、问问题(你有什么职业规划)没错,每个面试官都要问这个问题,三面也是
三面:(P9面,聊人生居多)
1、项目中用的中间件的理解(Dubbo、MQ、Redis、kafka、zookeep)
2、参与过类似秒杀的项目?你认为这样的项目挑战在哪里,怎么解决
3、项目中遇到的最大问题和解决策略
4、生活中遇到的最大的挫折
5、生活中遇到的最大的令你最有成就感的事情
6、问问题(你有什么职业规划)
阿里面试题:
1. junit用法,before,beforeClass,after, afterClass的执行顺序
2. 分布式锁
3. nginx的请求转发算法,如何配置根据权重转发
4. 用hashmap实现redis有什么问题(死锁,死循环,可用ConcurrentHashmap)
5. 线程的状态
6. 线程的阻塞的方式
7. sleep和wait的区别
8. hashmap的底层实现
9. 一万个人抢100个红包,如何实现(不用队列),如何保证2个人不能抢到同一个红包,可用分布式锁
10. java内存模型,垃圾回收机制,不可达算法
11. 两个Integer的引用对象传给一个swap方法在方法内部交换引用,返回后,两个引用的值是否会发现变化
12. aop的底层实现,动态代理是如何动态,假如有100个对象,如何动态的为这100个对象代理
13. 是否用过maven install。 maven test。git(make install是安装本地jar包)
14. tomcat的各种配置,如何配置docBase
15. spring的bean配置的几种方式
16. web.xml的配置
17. spring的监听器。
18. zookeeper的实现机制,有缓存,如何存储注册服务的
19. IO会阻塞吗?readLine是不是阻塞的
20. 用过spring的线程池还是java的线程池?
21. 字符串的格式化方法 (20,21这两个问题问的太低级了)
22. 时间的格式化方法
23. 定时器用什么做的
24. 线程如何退出结束
25. java有哪些锁?乐观锁 悲观锁 synchronized 可重入锁 读写锁,用过reentrantlock吗?reentrantlock与synmchronized的区别
26. ThreadLocal的使用场景
27. java的内存模型,垃圾回收机制
28. 为什么线程执行要调用start而不是直接run(直接run,跟普通方法没什么区别,先调start,run才会作为一个线程方法运行)
29. qmq消息的实现机制(qmq是去哪儿网自己封装的消息队列)
30. 遍历hashmap的三种方式
31. jvm的一些命令
32. memcache和redis的区别
33. mysql的行级锁加在哪个位置
34. ConcurrentHashmap的锁是如何加的?是不是分段越多越好
35. myisam和innodb的区别(innodb是行级锁,myisam是表级锁)
36. mysql其他的性能优化方式
37. linux系统日志在哪里看
38. 如何查看网络进程
39. 统计一个整数的二进制表示中bit为1的个数
40. jvm内存模型,java内存模型
41. 如何把java内存的数据全部dump出来
42. 如何手动触发全量回收垃圾,如何立即触发垃圾回收
43. hashmap如果只有一个写其他全读会出什么问题
44. git rebase
45. mongodb和hbase的区别
46. 如何解决并发问题
47. volatile的用途
48. java线程池(好像之前我的理解有问题)
49. mysql的binlog
50. 代理模式
51. mysql是如何实现事务的
52. 读写分离何时强制要读主库,读哪个从库是通过什么方式决定的,从库的同步mysql用的什么方式
53. mysql的存储引擎
54. mysql的默认隔离级别,其他隔离级别
55. 将一个链表反转(用三个指针,但是每次只发转一个)
56. spring Aop的实现原理,具体说说
57. 何时会内存泄漏,内存泄漏会抛哪些异常
58. 是否用过Autowire注解
59. spring的注入bean的方式
60. sql语句各种条件的执行顺序,如select, where, order by, group by
61. select xx from xx where xx and xx order by xx limit xx; 如何优化这个(看explain)
62. 四则元算写代码
63. 统计100G的ip文件中出现ip次数最多的100个ip
64. zookeeper的事物,结点,服务提供方挂了如何告知消费方
65. 5台服务器如何选出leader(选举算法)
66. 适配器和代理模式的区别
67. 读写锁
68. static加锁
69. 事务隔离级别
70. 门面模式,类图(外观模式)
71. mybatis如何映射表结构
72. 二叉树遍历
73. 主从复制
74. mysql引擎区别
75. 静态内部类加载到了哪个区?方法区
76. class文件编译后加载到了哪
77. web的http请求如何整体响应时间变长导致处理的请求数变少,该如何处理?用队列,当处理不了那么多http请求时将请求放到队列
78. 中慢慢处理,web如何实现队列
79. 线程安全的单例模式
80. 快速排序性能考虑
81. volatile关键字用法
82. 求表的size,或做数据统计可用什么存储引擎
83. 读多写少可用什么引擎
84. 假如要统计多个表应该用什么引擎
85. concurrenhashmap求size是如何加锁的,如果刚求完一段后这段发生了变化该如何处理
86. 1000个苹果放10个篮子,怎么放,能让我拿到所有可能的个数
87. 可重入的读写锁,可重入是如何实现的?
88. 是否用过NIO
89. java的concurrent包用过没
90. sting s=new string("abc")分别在堆栈上新建了哪些对象
91. java虚拟机的区域分配,各区分别存什么
92. 分布式事务(JTA)
93. threadlocal使用时注意的问题(ThreadLocal和Synchonized都用于解决多线程并发访问。但是ThreadLocal与synchronized有本质的区别。synchronized是利用锁的机制,使变量或代码块在某一时该只能被一个线程访问。而ThreadLocal为每一个线程都提供了变量的副本,使得每个线程在某一时间访问到的并不是同一个对象,这样就隔离了多个线程对数据的数据共享。而Synchronized却正好相反,它用于在多个线程间通信时能够获得数据共享)
94. java有哪些容器(集合,tomcat也是一种容器)
95. 二分查找算法
96. myisam的优点,和innodb的区别
97. redis能存哪些类型
98. http协议格式,get和post的区别
99. 可重入锁中对应的wait和notify
100. redis能把内存空间交换进磁盘中吗(这个应该是可以的,但是那个面试官非跟我说不可以)
101. java线程池中基于缓存和基于定长的两种线程池,当请求太多时分别是如何处理的?定长的事用的队列,如果队列也满了呢?交换进磁盘?基于缓存的线程池解决方法呢?
102. synchronized加在方法上用的什么锁
103. 可重入锁中的lock和trylock的区别
104. innodb对一行数据的读会枷锁吗?不枷锁,读实际读的是副本
105. redis做缓存是分布式存的?不同的服务器上存的数据是否重复?guava cache呢?是否重复?不同的机器存的数据不同
106. 用awk统计一个ip文件中top10
107. 对表做统计时可直接看schema info信息,即查看表的系统信息
108. mysql目前用的版本
109. 公司经验丰富的人给了什么帮助?(一般boss面会问这些)
110. 自己相对于一样的应届生有什么优势
111. 自己的好的总结习惯给自己今后的工作带了什么帮助,举例为证
112. 原子类,线程安全的对象,异常的处理方式
113. 4亿个int数,如何找出重复的数(用hash方法,建一个2的32次方个bit的hash数组,每取一个int数,可hash下2的32次方找到它在hash数组中的位置,然后将bit置1表示已存在)
114. 4亿个url,找出其中重复的(考虑内存不够,通过hash算法,将url分配到1000个文件中,不同的文件间肯定就不会重复了,再分别找出重复的)
115. 有1万个数组,每个数组有1000个整数,每个数组都是降序的,从中找出最大的N个数,N<1000
116. LinkedHashmap的底层实现
117. 类序列化时类的版本号的用途,如果没有指定一个版本号,系统是怎么处理的?如果加了字段会怎么样?
118. Override和Overload的区别,分别用在什么场景
119. java的反射是如何实现的
120. HashMap底层执行原理,
121. hashtable和ConcurrentHashMap如何实现线程安全?
122. jvm的内存布局,垃圾回收机制
123. 类加载机制里的,双亲委派模型
124. 阐述事务的隔离级别和传播属性
125. 高并发下,如何做到安全的修改同一行数据?
126. A服务调用B服务多接口,响应时间最短方案;
127. A系统给B系统转100块钱,如何实现?
128. 动态代理的几种实现方式及优缺点
129. 多线程下读概率远远大于写概率,如何解决并发问题?
130. 按线程池内部机制,当提交新任务时,有哪些异常要考虑?
131. @Transaction注解一般写在什么位置?如何控制其回滚?
132. 说说Spring的IOC容器初始化流程?
133. 说说springboot启动机制
134. Redis高性能的原因大概可以讲一些?
135. 你是怎么控制缓存的更新?(被动方式/主动方式/增量/全量)?
136. 浅析Http和https的三次握手有什么区别。
137. 谈谈Session/cookie机制,如何实现会话跟踪?
138. 什么是一致性hash?
139. MQ有可能发生重复消费,如何避免,如何做到幂等?
140. 如何做限流策略,令牌桶和漏斗算法的使用场景?