前面已经面过n次了,都失败了,从最开始还是小小白的时候到现在!
面试
1 第一步,自我介绍:
个人答题方式:简练的说出自己毕业于什么大学,何时毕业;[本科],自学入行,平时研究java的方式,擅长哪些中间件,技术;自己工作中涉及的一些亮点项目,github自己的两个项目【tcc,分库分表】
控制在2分钟左右,擅长的东西务必熟悉精通,接下来很有可能基于你的项目切入
2 第二步:面试问题
由我项目中涉及的自己开发的分库分表组件切人
1 我的路由算法: hash一致
1.1 项目怎么实现的一致性算法
1.2 hash一致性算法怎么实现,有什么好处
1.3 会有hash碰撞问题吗,切到hashmap的hash碰撞相关问题
2 还有哪些路由算法:
取模,时间片等
2.1 为什么不用取模2.2 取模优势:[算法更简单,免去hash环的加载],取模更容易平滑扩容
2.3 如何实现多个算法 多个路由算法引发的一些概念问题:面向抽象编程,依赖倒置
3设计模式:[选几个自己熟悉的讲 我讲了下面三个]
模板方法
工厂
单例:单例的场景:[大对象一次加载,降低内存,IO,带宽等]|[spring单例降低内存消耗] 懒汉单例安全的两者实现[同步,静态内部类]
4 由分库分表引入到mysql
1 mysql 设计架构
2 innodb存储引擎相关问题
3 b+树,查询复杂度,b+树如何实现平衡,树如何防止成为链表 ,b+树的实现
4 索引如何建立:
5 索引如何调优:
5 最后:
面试官的建议建议基础待加强,设计模式需要系统深入
询问能否现场面:回答可以
个人感悟: 1表达很重要:会要简明扼要回答; 不会,就说不太能回答[然后询问一些场景或让面试官给下方向,然后给出自己的一些答案,不要冗余回答]
2 基础很重要,java基础,数据结构基础,线程基础,算法基础!