算法
秒杀项目
核心问题:高并发下大量请求对数据库的压力(是读请求还是写请求的压力?分开讨论),是否能对瞬时压力进行平滑处理
缓存怎么设计的?并发来自与写还是读?是否考虑了穿透、击穿问题?
缓存淘汰机制,失效时间:到活动结束的时候
考虑了缓存大量失效,穿透和击穿;对空值做缓存,穿透
ES怎么用的?
线程池,七大参数,淘汰机制,描述线程池模型
淘汰机制怎么选用
AbortPolicy中止策略:丢弃任务并抛出异常。比较关键的业务推荐使用该策略,这样在系统不能承载更大并发量的时候就能通过异常发现
DiscardPolicy丢弃策略:丢弃任务不抛异常。一些无关紧要的任务可以使用这个策略
DiscardOldestPolicyi弃老策略:根据实际业务来决定是否允许丢弃老任务
CallerRunsPolicy:由调用者处理。一般在不允许失败、对性能要求不高、并发量小的场景使用
设计模式
单例、工厂、职责链模式、代理模式、策略模式、多例模式
数据库
聚簇索引和非聚簇索引存储层面差异
适用场景:聚簇索引主键索引、非聚簇索引二级索引辅助索引
区块链
哈希索引,区块链就是哈希索引构成的链表,不可篡改性,默克尔树,BTC,ETH
职业规划
反问:面试表现;项目部分描述的有些广,表达更结构化一些,行动方案和结果部分做一些优化,希望这块更详细一点。并发这块读的挑战、写的挑战怎么处理的。
反问:几面:三面、一面二面技术面,三面hr面
反问:区块链这块的建议
自我介绍
秒杀项目
加mq的意义?削峰,平滑掉
抢完柜子发mq,如果这时候数据库处理失败了怎么办?
catch异常之后补偿机制
程序崩了,重启服务,根据日志定位问题。有没有更智能一点的?
通过数据库来反向更新redis
用了ES
比如图书馆上千万本书放数据库为什么不如ES?为什么数据库不合适?
数据结构的问题,B+树IO次数更多
模糊查询为什么B+树不好?
倒排索引
字典树
字典树能解决模糊查询吗?不行
因为它也是有序的
用途,公共前缀
掌握的最好的知识点:Netty
线程模型?主从Reactor模型
work和boss线程池数量,为什么这样设计,为什么accept只需要一个线程?
因为accept事件只需要建立一次连接,连接是可以复用的,accept只接受一次
聊天
哪个项目最具有挑战性,挑战性是什么?
没有实习,自身有什么优势。优缺点
你觉得自己最自豪的事是什么
更倾向哪种leader