作者:小姐姐养的狗 | 公众号:小姐姐味道
上一篇:8种最坑的SQL错误用法,第一个就很坑?
本文为作者面试蚂蚁的面试题和心得,正文如下,如有雷同,纯属巧合。
TreeSet/HashSet 区别
2、TreeSet
默认
不可以接受null值,会直接抛出空指针异常
set里没有重复数据,treeSet里连虚无都没有。
HashMap 如何解决冲突,扩容机制
hash槽
。
transfer
方法。
经验:resize非常耗时,所以如果能够提前预估容量,可以把initailCapacity提前固定下来。
ConcurrentHashMap 如何做到高并发的
这道题往深里问会死人的,篇幅有限,不啰嗦。
线程池平常怎么用
他们很喜欢你提到阿里规范,这让我觉得jdk设计的很low
多个线程等待到某一节点然后统一放行有几种实现方式?
也可以答sleep啊。有什么问题么?我用while等待一个变量也是可以的,但我为什么要这么做?
数据库索引结构
pg的索引结构就多了去了。Mysql这么少怎么感觉怪怪的?难道要我回答存储引擎的区别?
select * from t where a=? and b>? order by c limit 0,100 如何加索引
当order by 字段出现在where条件中时,才会利用索引而无需排序操作。其他情况,order by不会出现排序操作。
什么是聚簇索引和非聚簇索引
对编程来说没什么鸟用。
了解 CAP 吗?redis 里的 CAP 是怎样的?
Consistency
一致性Availability
可用性Partition tolerance
分区容错
一般,都在C、A之间进行权衡。
CP
的,即对于一致性要求较高。
redis-cluster,则属于
AP
类型,更加强调可用性
cap就是帽子,绿油油的那种
如何理解幂等?项目中接口的幂等是如何做的?
at least once
,所以消息有时会重复。
就如同表白,每次表白都是被拒绝,因为我就是那个id!
解释下乐观锁悲观锁
悲观锁是老婆,有你独占;乐观锁是炮友,按预约规划
JVM 判断对象是否回收?
通常被骂“断子绝孙”的人,就是要被回收的root
GCROOT 有哪些?
所以不要让他们过度繁殖。
反射能获得类里面方法的名称吗?参数名称呢?参数类型呢?
名称
。但有前提,需要加编译开关。
javac -parameters
问题都偏到月球上去了
动态代理的实现方式?CgLib 和 jdk 的代理有什么区别?
在spring里,cglib胜出
分布式锁有哪些主流实现方式?redis 和 zk 锁有什么区别?
基于版本号机制和CAS实现,与存放版本号的存储无关。
1、基于数据库记录,进入时写数据,退出时删记录
从优雅性来说,显然redis胜出
ThreadLocal 作用是什么?说下用法
ThreadLocal中存放的是与线程相关的数据,底层实际上是一个map,通过线程可以获取存储数据的map。
据说这是一种线程同步方式,但它明显无锁啊。
ThreadLocal有没有优化方式?
搞不懂jdk,明明有O(1)的Map,非要自己造个更慢的轮子,为什么呢?话说,这个问题,简直又偏到火星了。
设计秒杀系统要考虑哪些点?
怕就怕抓住一点问到底。秒杀个屁啊,淘宝的秒杀要么抢不到,要么500!