面试时常一个小时,没有做算法题
问题清单(只展示核心问题,简单八股就不列出来了):
总结 面试官问的问题大多都是从业务出发,非常集中,主要问的场景就是问从 Mysql 到 Mysql 的如何进行数据传输,以及使用 Kafka 作为消息中间件的时候的一些生产和消费的问题。 好多问题没答上来不是面试官出题刁钻,存粹是我自己菜,最后也问了一下他们做业务的过程中的一些问题和进展,也算是有收获。
PS:面试官会引导面试者进行回答,非常 Nice
1 v2exgo 218 天前 有点刁钻,很多都不是常见的 |
2 v2exgo 218 天前 可能你这个面试的是基础中间件岗位 |
3 coderonlee 218 天前 这是一面? |
![]() | 4 liangkang1436 OP @coderonlee 是的 |
![]() | 5 einvince 217 天前 复盘不把正确答案复盘下吗 |
6 EMMMMMMMMM 217 天前 |
![]() | 7 zizon 217 天前 好奇第四个问题的背景. 直接 binlog 有什么问题? |
8 v2exgo 217 天前 @zizon ![]() |
10 v2exgo 217 天前 @zizon 估计面试也是要问你具体的因素的,像你大表,不可能用 limit offset 这个超过一定数量的时候有性能问题,所以你要考虑用主键,那用主键就要考虑步长的问题,mysql 主键自增也是可能有空隙的,如果主键不是自增的,你又要怎么处理,反正屁事很多,具体的业务场景你没做过,肯定都要想办法上网去查方案 |
11 v2exgo 217 天前 假设 Mysql 里有一张 student 表,表里面有一个 name 字段,student 配置的是 utf-8 编码,但是 student 配置的是 的编码,然后用 canal 去订阅,会有什么问题? 这个问题估计编码可能有问题,因为 binlog 本质上内容还是 SQL ,如果 SQL 存在编码问题,那么从库的数据肯定就对不上了 |
12 v2exgo 217 天前 @zizon 然后 binlog 不是有几种模式,有 statement 跟 row mixed 模式,一般做这种同步,最好使用 row 模式,肯定也会问到的,八股文的东西太多了,我以前也看过,刚才才想起来,还有 binlog 的 row 格式 |
13 v2exgo 217 天前 @v2exgo #11 2. Binlog 事件中的字符集信息缺失 原因: 在 ROW 格式的 Binlog 中,字段的字符集信息通过 Table Map Event 传递。 若 Canal 未正确读取字段的 字符集元数据,可能直接使用表默认的 utf8 解码。 |
![]() | 14 liangkang1436 OP @einvince 很多问题答案不唯一,而且大部分问题只是一个引子而已,答出来了面试官会根据你的回答问第二个第三个问题。所以就懒得放答案了。 |
![]() | 15 liangkang1436 OP @v2exgo 其实老哥已经答得差不多了,实际方案就是,确定一个时间为历史数据和增量数据的分割点,然后开启可重复读得事务,保证读取历史数据的时候,不被后续的更改干扰,然后用多线程得方式去读取历史数据(记得记录消费进度),或者其他的方式比如 mysqldump 把历史数据拉下来,然后到目的端恢复,恢复得时候也可以并发写入,历史数据发送完之后,再开始指定时间点之后得 binlog 日志,大概就是这个思路 |
![]() | 17 coefu 217 天前 这些问题讲真用来面试,只能说面试的人水平确实不行,因为很多问题都是需要时间慢慢磨的。高明的面试只需要一个问题,不断的盘对于问题的认知和解决思路。解决问题的思路比具体问题更有价值。 |
![]() | 18 liangkang1436 OP @coefuqin 我这段时间面试,碰到的都是这些问题:笑哭:,现在用人单位要求高,也不缺简历,可能问问题就刁一些了。 |
19 v2exgo 216 天前 @coefuqin 没办法,很多时候 用人单位就是这样设计场景题的,首先是筛选外包那些菜的,另外就是筛选八股文不熟悉的,同步数据说到底就是那几个思路,先你得有一个快照,这个快照不能受到干扰吧,然后可重复读不是有 gap lock 么,这个你事务时间太长 gap-lock 是不是耽误别的数据进行一个写入呢?那是不是能采用小范围的读数据,把 gap-lock 的范围缩小,然后是不是能考虑用索引,这个时候是不是又要考虑 非唯一索引 跟唯一索引的 gap-lock 范围 以及位置,这些里面组合的情况很多的,你要根据实际情况 去做方案,做了方案还要做实施 |
21 qingyingwan 216 天前 @v2exgo 这不算核心问题,九成靠经验吧。真实业务场景极少遇到的不算核心,只能说刁钻。反正我大厂高并发后端深入技术干过,创业公司全能后端也做过,没遇到过一次。各种成熟的三方工具,比如想的方案厉害多了。深究细节的话,比如你去研究下 mysql 的架构和源码,即使只读懂一百行 C++,也可以直接问倒任何考八股文的面试官。再比如,内存屏障,原子操作,在各种 CPU 架构上如何实现,这种细节随便都可以问倒一批人,我马上查一下就知道了,但我知道这些,也并不比不了解的答主厉害,因为他也会搜索会问 ai 。 |
22 v2exgo 216 天前 @qingyingwan 我知道,这个时候,其实你也是要去表达的,你有哪些思路 有哪些地方可以考量的,很多面试官的意思就是看你工作中处理的经验多不多而已,真实的案例中,可能网上已经有成熟的方案跟工具了,而且很有可能你根本就没做过这块,但是不妨碍你表达你可能在这个方案中 你会思考哪些东西,可能哪些点需要你去做抉择 |
23 v2exgo 216 天前 @qingyingwan 是的,一个细节可以问死很多人,像原子变量 x86 可以用 lock 汇编命令,底层有 MESI 缓存一致性协议,这里面又有很多细节,以及队列的实现,具体到底层 有大量的细节,很容易问死人 |