线上面试,写的内容都发在腾讯会议里
1自我介绍;
2让介绍项目难点;
3给一张表,写SQL,聚合函数➕自连接;
4问技术,问到Redis拿来干啥了,说了下做查询缓存还有多服务器实例共享数据,做JWT版本控制。
5问设计模式,自己说了单例,工厂,建造者。让介绍一下并说下为啥要用这些设计模式,说到单例的时候让写一个双重检测的单例。
6顺带就问了synchronized是否是重量级锁,我紧张的一批说并发小是自旋锁,并发大自动升级成重量级锁(单线程是偏向锁没说),解释了下自旋锁。
然后就问有用过其他锁没,我说Redis的分布式锁。结果让我说下Java自带的一些锁,全忘了,就说只记得有Lock接口有lock()和unlock()方法了,其实感觉该说下CAS和读写锁ReadWriteLock的。
还有些忘了
7最后给了半小时写一个算法。
给了个部门类,成员变量部门id,部门名,父部门ID;给了个集合,里面有很多个部门。
让实现一个方法给任意部门id,返回一个列表包含其所有子部门对象。
算法太菜,弄了好久写了个BFS的搜索,调试了下勉强能跑。