前面已经面过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基础,数据结构基础,线程基础,算法基础!